App-Bin4TSV-6
view release on metacpan or search on metacpan
sub eachFile ( $ ) ;
# 以ä¸3åã¯eachFileããå¼ã°ããã
sub colnames( $ ) ; # -=ã®æã«å
é è¡ã®æ
å ±ãåãåºã
sub filePinfo ; # ãã¡ã¤ã«æ¯ã®2次æ
å ±(ä¸è¡ãµããª)
sub ColFreq ( $$ ) ; # 第ï¼å¤æ°ã¯ãã¡ã¤ã«ãã³ã㫠第ï¼å¤æ°ã¯åç
§ ; ååã®å¤ã®åå¸ãåãåºã
## å
¨ä½ã§ä½¿ã夿°
* decode = $o{u} ? * decode_utf8 : sub ($){ $_[0] } ; #* encode = $o{u} ? * encode_utf8 : sub ($){ $_[0] } ;
my $optR0 = defined $o{R} && $o{R} eq 0 ;
* R0proc = $optR0 ? sub {} : sub { s/\r$// } ; # -R0 ãæå®ãããæã®å¦ç
binmode *STDOUT , ':utf8' if $o{u} ; # ããã ãå
¨ä½ã§ä½¿ã夿°ã¨ã¯è¨ãããããããããªããããªãã·ã§ã³ã®å¦çã¯ãã®ç¯ã®ååã«ããã®ã§ã
$| = 1 if $o{'!'} ;
$o{g} //= 6 ; # if ( ! defined $o{g} ) ; # åãåºãæ°
$o{'#'} = decode ( $o{'#'} ) if defined $o{'#'} ;
push @ARGV , '-' unless @ARGV ; # æ¨æºå
¥åã®è¿½å
my $isep = $o{i} // "\t" ; # å
¥åã®åºåãæå $o{','} = do { $o{','} //= "\t" ; eval qq[qq[$o{','}]] } ;
my $sec = $o{'@'} // 15 ; # ä½ç§ãã¨ã«ã¬ãã¼ãã表示ãããã
my $L = ',' ; # åºåã«ããç¾ããåºåãæåå
my $nc = 0 ; # è¨æ°å¯¾è±¡ã¨ããªãã£ãã»ã«ã®æ°ãã«ã¦ã³ãã
my $rl ; # åãã¡ã¤ã«ã®èªãã è¡æ°ãæ ¼ç´ã
my %fOut = (
} ;
$SIG{ INT } = ${ INT1 } ;
$SIG{ ALRM } = sub { say STDERR GREEN + (d3 $rl) . " lines read. " , scalar localtime ; alarm $sec } ;
alarm $sec ;
eachFile $_ for @ARGV ;
exit 0 ;
## 1åãã¤ãã¡ã¤ã«ãèªã¿åãã
sub eachFile ( $ ) {
my $FH = do { my $t = *STDIN if $_[0] eq '-' ; open $t, '<', $_[0] if!$t ; binmode $t , ':gzip(gzip)' if $o{z} ; $t } ; # ãã¡ã¤ã«ãã³ãã«ã®åå¾
$rl = 0 ; # åãã¡ã¤ã«ã®èªã¿åã£ãè¡æ°
# 1. æåã®ååã®ä¸¦ã³ãèªã¿åã:
my @colnames = colnames $FH if $o{'='} ;
# 2. ãã¼ã¿ã®ä¸èº«ãèªã¿åãã¤ã¤ãè¿ãå¤ã¯ãåæ°ãã
my $maxCols = ColFreq $FH, my $colvals ; #my $colvals ; ååã®åãã¼ã¿å¤ã®åº¦æ°ãéè¨;$colvals->[åçª-1]{ãã¼ã¿å¤}=度æ°
close $FH ;
# 3. åºåããã
AlignOut @{ $fOut{$o{j}?'j':'e'} } if 0 ne ($o{0}//'') ;
defined $colvals->[$_] and ColStat $colvals->[ $_ ] , $colnames[$_] for 0 .. $maxCols - 1 ; # ãªãã·ã§ã³ -0 ã«ããå
¨ã¦ã®å¤ãé¤å¤ããããã¨ã¯èµ·ããããã
# 4. 2次æ
å ±ãåºåããã
}
return [ @out ] ;
}
# åè¡ã®åºåå¦çã sCols颿°ãå¼ã³åºãã¦ã鏿ããã-n ã§åçªå·ãä»ããã
sub line ( ) {
chomp ;
& R0proc ;
$_ = decode_utf8 ( $_ ) if $isep eq '' ; # å
¥åãSTDINã¨ã¯éããªãã®ã§ binmode ã使ãã decode_utf8
my @F = split /$isep/ , $_ , $split_limit ; #use Data::Dumper ; print scalar @F , Dumper [@F];
@F = map { $_ + 1 . ":$F[$_]" } 0 .. $#F if $o{n} ; # -n ã§åçªå·ãã³ãã³ãä»ãã¦åºå
push @F , $emp ; # $F[-1] ã§åç
§ãã
print join ( "$osep" , @F [ @{ sCols $#F } ] ) , "\n" ;
}
# main
sub main {
binmode STDOUT ,":utf8" if $isep eq '' ; # æååä½ã§å¦çããå ´åãutf8ã¨ãã¦ã®æ±ããããã
# ä¸è¡ç®ã㤠-= ãæå®ãããå ´åã®å¦ç
if ( $o{'='} ) {
$_ = <> ;
chomp ;
& R0proc ;
my $c = 0 ;
$colNamePos { $_ } = ++ $c for split /$isep/ , $_ , $split_limit ; # <-- å岿ååã«æ°ãã¤ããã
$cream{ $_ } = [ expand $o{$_} ] for qw/p d h t/ ;
line ; # <-- -
}
( run in 0.370 second using v1.01-cache-2.11-cpan-3cd7ad12f66 )