App-coldigits

 view release on metacpan or  search on metacpan

coldigits  view on Meta::CPAN

my $neoM = ! exists $o{M} ; 
my $noB = ! $o{B} ; 
my @cn =  & colnames if $o{'='} ;  # Column Names の頭文字
my @Cij  ; # $Cij[列番]{桁数} により、0始まり何番の列に、何桁のものが、何件あったかを示す。
my %Cj  ; # $Cj{ 桁数} > 0 により、その桁数のものが存在したことを示す。digit length のつもり。
my @Cj  ; # 出力の時に使う。 sort { $a <=> $b } keys %Cj ;
my @E1  ; # $E1[$i] = [入力$i列目(出力$i行目)の最も右のjの値(位置) , 入力での出現値 , その位置と出現値の頻度 ] 。
my @E2  ; # [位置, 出現値, 頻度]  ; $E2[$j] で $E1[$j] に準じるものになる。 形式は同様。
my @out ; # 出力時に、各行で何をタブ区切りで表示するかを格納する。

binmode STDOUT, "utf8" if ($o{u}//'') ne 0 ; 
 
## -- -
M : # オプション -M が指定された時。
while( <> ) { 
  chomp ; & R0proc ; 
  my @F = split /$isep/o , decode( $_ ) , -1 ; 
  for ( 0 .. $#F ) {
    my %jd = do { my %z ; $z{$_}++ for split //, $F[$_], 0 ;   map{ $_,$z{$_} }   grep { &y_filter($z{$_}) } keys %z } if exists $o{M} ; 
    for my $j (  $neoM ? do { my $j = len ( $F[$_] ) ; & y_filter ( $j ) ? ($j) : () } : keys %jd )  {
      $neoM ? $Cij [ $_ ] { $j } ++ : do { $Cij [ $_ ] { $jd {$j} } { $j } ++ ; $j = $jd{$j} } ; # $Cij[入力列番]{文字列長} か $Cij[入力列番]{出現頻度}{出現文字}



( run in 1.151 second using v1.01-cache-2.11-cpan-3cd7ad12f66 )