App-Bin4TSV

 view release on metacpan or  search on metacpan

scripts/csv2tsv  view on Meta::CPAN

      print STDERR BRIGHT_RED $sout ; 
    }
  }
  # エラー処理 (Text::CSV_XS のエラー処理)  , このプログラムの変数の使い方が理由で、この位置にENDを置いた。
  END { 
    #exit if $o{'~'} ;
    exit if ! defined $csv ; 
    my @tmp = $csv -> error_diag () ; # ($cde, $str, $pos, $rec, $fld) = $csv->error_diag ();
    if ( $tmp[0] != 2012 ) {  # perldoc Text::CSV_XS で 2012 を参照。EOFを意味する。
      print STDERR BRIGHT_RED join (":",@tmp),"\n" ;
      print STDERR ON_BRIGHT_RED BLACK "_ERROR_INPUT at line $.: " ; 
      #use Data::Dumper ; #print STDERR UNDERLINE Dumper $csv  ; 
      print STDERR UNDERLINE BRIGHT_RED $csv ->{_ERROR_INPUT} ; 
      exit 1 ; 
    }
  }
}

## ヘルプとバージョン情報
BEGIN {
  our $VERSION = 0.56 ;
  $Getopt::Std::STANDARD_HELP_VERSION = 1 ; 
  grep { m/--help/} @ARGV and *VERSION_MESSAGE = sub {} ; 

scripts/headomit  view on Meta::CPAN

  * show = $o{2} ? sub { & show0 if $_ ne $head }  : * show0 ; 
  my $slen = $o{t} // undef ; 
  my @s = () ; #undef) x $slen if defined $slen ; # 読んだ行を一定の長さ蓄える。
  #* stock = defined $o{t} ? sub { push @s , $_ ; $_ = @s > $slen ? shift @s : undef ; goto LOOP_END unless defined $_ } : sub {} ; 
  * stock = defined $o{t} ? sub { push @s , $_ ; $_ = @s > $slen ? shift @s : goto LOOP_END } : sub {} ; # goto がトリッキーだが意図通り動作。
  * flag_c = $o{c} ? sub { } : sub { $ic += $. ; $. = 0 ; 1 } ;
  START1 :
  #exit eof () ;
  do { $head .= <> ; if ( eof ) { ++$fc ; &flag_c ; exit if eof () ; goto START1} } for 1 .. $o{h} ;# ; $lc ++ } ; 
  do { $_ = $head ; & show0 } if $o{1} ; # 最初のファイルだけ先頭行を表示する。
  EACH_INPUT_LINE :
  while ( <> ) {
    & flag_n ;
    & flag_f ;
    & stock ; 
    show ; 
    LOOP_END :
    if ( eof ) {
      @s = () ; 
      & flag_c ; #do{ $ic += $. ; $. = 0 } if ! $o{c} ; 
      $fc ++ ; 



( run in 0.603 second using v1.01-cache-2.11-cpan-4e96b696675 )