ハッシュを使った集計結果の出力について
ハッシュを使った集計結果の出力について
testフォルダに以下のファイルがあるとします。
aaa_1、aaa_2、bbb_1、bbb_2、ccc_1、・・・
各ファイルには○△×がついた行があり、
「aaa」のファイル(aaa_1とaaa_2)の○△×の数、「bbb」のファイルの○△×の数、を集計したいと思っています。
出力イメージは以下です。
ファイル名の一部,○の数,△の数,×の数
aaa,13,59,37
ファイル名の一部をキーとして、
○△×の回数を値にしたハッシュで集計しようとしましたが、
以下のようになってしまいました。
,0,0,0
,0,0,0,0,0,0
aaa,13,59,0
aaa,13,59,0,13,59,37
bbb,20,10,0
bbb,20,10,0,20,10,30
ハッシュが十分に分かっていないので、おかしなことをしてるのだと思うのですが。。
ご教授くださいますよう、お願いします。
opendir(DIR, $dir);
while ($file = readdir(DIR)){
$maru =0;
$san =0;
$batu =0;
$file =~/(.*)_(.*)/;
$name = $1;
open(IN, "$dir/$file");
while ( $line = <FIN1> )
{
chomp( $line );
if($line =~/○/){
$maru++;
}elsif($line =~/△/){
$san++;
}elsif($line =~/×/){
$batu++;
}
}
push(@{$test{$name}} , $maru,$san,$batu);
@gyou = ( $name , join ("," , @{$test{$name}})) ;
print OUT join (",", @gyou). "\n";
}
close (IN);
close (OUT);
お礼
ありがとうございました $in{way_$i}ではなく、$in{"way_$i"}としたところうまくいきました 大変勉強になりました