ハッシュを使った集計結果の出力について
ハッシュを使った集計結果の出力について
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);
お礼
ふたつのprintの後ろにOUTを入れると解決しました。 本当にありがとうございました。
補足
ありがとうございます。 print OUT $1; を移動させることで少し目的の形に近づきました。 open(OUT,">$file"); print ">"; print OUT $1; print "\n"; } else { print OUT $_; } } close(IN); としたのですが、出力ファイルが ・ファイル名 AA A AAA ・テキスト内 AA A AAAaaaaaaaaaaaaaaa aaaaaaaaaaaa となり、テキスト内に最初の">"の文字と改行が行われません。 どうすれば改善されるでしょうか?