each関数 - ハッシュのすべてのキーと値を処理する
each関数を使用するとハッシュとキーと値のペアを取得することができます。繰り返し使用することで、すべてのキーと値を取得できます。
# ハッシュのキーと値のペアの取得 my ($key, $value) = each %hash;
eachを連続して使用するとすべての(キー, 値)のペアを順番に取得できます。取得する(キー, 値)のペアの順番は不定です。
# (キー, 値)のペアを順番に取得 my %age = (Ken => 19, Mike => 34); while (my ($name, $age) = each %age) { ... }
while文を使って、キーと名前のペアを順番に取り出しています。
each関数を実践で使用することは少ないと思います。同じ処理が、keys関数を使って行うことができ、keys関数を使ったほうが柔軟性が高いからです。現在のPerlでは、keys関数が最適化されているので、パフォーマンス上においても、each関数に比べて、keys関数が遅いということはありません。
ハッシュのすべての値だけを取得するにはvalues関数を使うこともできます。
サンプルプログラム
ハッシュのすべての要素をeach関数を使って処理するサンプルです。
use strict; use warnings; # 生徒の数学の点数 my %math_scores = ( Taro => 89, Naoko => 54, Kenji => 54, ); # ハッシュのすべての要素をeach関数を使って出力する。 print "1: ハッシュのすべての要素each関数を使って出力する\n"; while (my ($key, $value) = each %math_scores) { print "%math_scores{$key} = " . $math_scores{$key} . "\n"; } print "\n";
実行結果
1: ハッシュのすべての要素each関数を使って出力する %math_scores{Kenji} = 54 %math_scores{Taro} = 89 %math_scores{Naoko} = 54