App-Bin4TSV-6
view release on metacpan or search on metacpan
use 5.014 ;
use strict ;
use warnings ; # also confirmed on 5.011 5.014 5.018
use autodie qw [ open ] ;
use Encode qw[ decode_utf8 encode_utf8 ] ;
use FindBin qw [ $Script ] ;
use Getopt::Std ; getopts 'R:g:i:jl:m:suz=!@:#:0:2:' => \my %o ;
use List::Util qw/max min maxstr minstr/ ;
use POSIX qw/strtod/;
use Scalar::Util qw/looks_like_number/;
use Term::ANSIColor qw/:constants color/ ; $Term::ANSIColor::AUTORESET = 1 ;
use Time::HiRes qw [ gettimeofday tv_interval ] ; my ${ dt_start } = [ gettimeofday ] ;
my $sdt = sprintf '%04d-%02d-%02d %02d:%02d:%02d', do{my @t= @{[localtime]}[5,4,3,2,1,0]; $t[0]+=1900; $t[1]++; @t } ;
eval "use PerlIO::gzip;1" or die "PerlIO::gzip cannot be loaded, so -z does not work. ($Script, $sdt)\n" if $o{z} ;
sub AlignOut ( @ ) ; # åºå ; eachFileã§ãColstatã§ã使ãã
sub ColStat ( $$ ) ; # $colvals->[åçª] 㨠ååã æ¸¡ããããã¦ããã®ä¸èº«ã表示ãããã; eachFileã§ãColstatã§ã使ãã
sub d3 ($) { $_[0] =~ s/(?<=\d)(?=(\d\d\d)+($|\D))/,/gr } ; # æ°ã3æ¡åºåãã«å¤æããã
sub eachFile ( $ ) ;
push @ostr , $t.'(x'.$p_ccount->{$t} .')' if ( $p_ccount->{$t} >= 2 ) ;
last if ( $c >= $o{g} ) ;
}
return @ostr ;
} ;
# é
ååç
§ãããæå°å¤æå¤§å¤ãåãåºã
sub minmaxstr ( $ ) {
sub part ( &@ ) ;
sub RangeStr ( $$ ) ;
my @gps = part {$_ eq '' ? 0 : looks_like_number $_ ? 1 : 2} @{ $_[0] } ;
my @ostr ;
push @ostr, '' if $gps[0] ; # 空æååãããã¨ãã®å¦ç
push @ostr, RangeStr( min(@{$gps[1]}), max(@{$gps[1]}) ) if $gps[1] ; # æ°ã«è¦ããå¤ãããã¨ãã®å¦ç
push @ostr, RangeStr( minstr(@{$gps[2]}), maxstr(@{$gps[2]}) ) if $gps[2] ; # æ°ã«è¦ããªãå¤ãããã¨ãã®å¦ç
return @ostr;
} ;
sub part ( &@ ) { my ($cd, @l) = @_ ; my @p ; push @{ $p[ $cd->($_) ] } , $_ for @l ; @p } ; # ãã®é¢æ°ã¯ List::MoreUtils
sub RangeStr ( $$ ) { $_[0] eq $_[1] ? "$_[0]" : "$_[0]..$_[1]" } # 2åã®æ°oræååãã 1..2ã®ãããªæååãçæ
#!/usr/bin/perl
use 5.014 ; use strict ; use warnings ;
use Scalar::Util qw/looks_like_number/; # 5.7 ~
use Getopt::Std; getopts '::^:~=+:,:@:0:1:R:d:i:qvm:' , \my %o ;
use Term::ANSIColor qw/:constants color/; $Term::ANSIColor::AUTORESET = 1 ;# v5.6 ~
#use utf8 ;
my $isep = $o{i} // "\t" ; # å
¥åã®åºåãæå
my $oemp = $o{'0'} // 0 ; # åºåã®ã»ã«ãæªå®ç¾©å¤ã®å ´åã«ä»£ããã«åºåããæåå
my $sec = $o{'@'} // 10 ; # ä½ç§ãã¨ã«å¦çç¶æ
ãåºåãããã
my $optR0 = defined $o{R} && $o{R} eq 0 ;
my $addC ; # ããåãå ç®ããå ´åã®åã®æå®
my $t00 ; # 表ã®å·¦ä¸é
ã«è¼ããæåå
my %ax2 ; # ãã¼ã¯æ¨ªè»¸ã®é
ç®åã¨ãªãã
showMat( \%Ce , "empties" ) ; # 空æååãããã¤åºç¾ããã
}
$SIG{INT} = $IntFirst
# my %Cv ; for my$i(@a1){for my$j(@a2){$Cv{$i}{$j}=($Cc{$i}{$j}//0)-($Ce{$i}{$j}//0)}}
}
sub StrNumSort ( @ ) {
+( sort { $a cmp $b } grep { ! looks_like_number ($_) } @_ ) ,
( sort { $a <=> $b } grep { looks_like_number ($_) } @_ ) ;
}
sub showMat ( $$ ) {
my ($C,$h11) = @_ ; # ã»ã«, 縦軸, 横軸, åºå表ã®å·¦ä¸ã®æåå
my @a1 = StrNumSort ( keys %{$C} ) ; # 縦軸ã®åé
ç®å
my @a2 = StrNumSort ( keys %ax2 ) ; # 横軸ã®åé
ç®å
if ( defined $o{':'} ) {
@a1 = () ; # ãªã»ãã
( run in 0.286 second using v1.01-cache-2.11-cpan-64827b87656 )