重複データの個数を数える
@fruits('みかん','もも','もも','みかん','みかん');
このような配列があります。
この配列で、「みかんが○個」「ももが○個」を調べたいとします。
foreach $name(@fruits)
foreachで、配列の中身を一つずつ$nameに格納
{ %hash; $hash{$name} => $hash{$name}++; }
$nameにはまず@fruitsの1番目の値「みかん」が入ります。
そして、$hash{$name}で、連想配列のキーとして「みかん」を
代入します。
連想配列は、みかん=>10 という風に入れるんでしたね。
なので、
「=>」を書きます。
つづいて、
$hash{$name}++
の部分は、値になるわけですが、数を数えるために、変数を代入し、
$nameの値がある度に1ずつ増加させていきます。
これで出来上がりです。
表示して確認してみましょう。
表示するためには、
while(($key, $value) = each%fruits){
print "$key = $value\n";
}
これで、みかん = 3個
のような表示になります。
MEMO my @fruits = ('A','B','B','A','A'); my %hash; foreach $name(@fruits) { %hash; $hash{$name} => $hash{$name}++; } while(($key, $value) = each %hash){ print "$key = $value\n"; } 実行結果 A=3 B=2