each関数:ハッシュに含まれている要素を順に取得する

Perl で用意されている組み込み関数の一つである each 関数の使い方です。 each 関数は対象となるハッシュに含まれている要素を順に取り出します。

(Last modified: )

each関数の書式と基本的な使い方

each 関数は次のように定義されています。

each(HASH)

each関数が実行される度にハッシュに含まれる要素をキーと値のペアの形で順
に取り出します。

パラメータ:
  HASH  対象のハッシュ
戻り値:
  キーと値のペアをリスト形式で取得

1 番目の引数には対象となるハッシュが格納されたハッシュ変数を指定します。この関数は主に繰り返し処理と共に使用され、ハッシュに含まれる要素を順に取得したい場合に使用されます。

具体的には次のように記述します。

my %address = (
"鈴木" => "東京都千代田区",
"山田" => "東京都葛飾区"
);

while (my ($key, $value) = each(%address)){
  print "key=$key, value=$value\n";
}

each 関数は実行される度にハッシュに含まれる要素を取り出します。イテレータ(反復子)を使い前回取り出した要素とは別の要素を順に取り出します。

今回のように while 文の条件式で要素の取り出しが行われると(実際には条件式のように値が必要な箇所でリストの代入が行われた場合)、条件式としてハッシュで取り出されていない要素の個数が評価されます。 0 以外の数値は全て真(true)ですのでこの繰り替えしはハッシュに要素が残っていない状態になると終了します。

サンプルコード

それでは簡単なサンプルを作成します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

my %address = (
"鈴木" => "東京都千代田区",
"本田" => "愛知県名古屋市",
"山田" => "東京都葛飾区",
"遠藤" => "大阪府堺市"
);

while (my ($key, $value) = each(%address)){
  print "key=$key, value=$value\n";
}

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

each関数:ハッシュに含まれている要素を順に取得する(1)

ハッシュに含まれるキーと値のペアを順に取得し画面に表示しました。

-- --

Perl で用意されている組み込み関数の一つである each 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。