初歩的な。。。foreachとwhileとeachと。。。

やってもうたよ。。。初歩的な過ち。。。

ハッシュとか配列とかで、キーと値をいっぺんに取ってくるeach関数。

よくやるのが、

while( my ( $key, $value ) = each( %hash ) ){
print "%hash{ $key } = ", $hash{ $key }, "\n";
}
とかやって、ハッシュの中身を表示したりするのによく使うと思いますが。。。

よりによって、、、

foreach ( my ( $key, $value ) = each( %hash ) ){
print "%hash{ $key }は ", $hash{ $key }, "\n";
}
とまぁ、whileのところをforeach文で書いちゃって、

%hash = (bob => '20歳', kate =>'21歳');

っていうハッシュがあるとすると、
出力結果が、

bobは20歳
bobは20歳
kateは21歳
kateは21歳

って続けて2度表示されるっ!!!
しばらく、ここが間違いって気づかんで、一生懸命ハッシュに値を入れるところをチェックしてた私って。。。
アホや。。。