ハッシュの初期化

広告

ハッシュについても宣言と同時に初期化することが可能です。初期化するにはリストを使って次のように記述します。

my @ハッシュ名 = (キー1,値1,キー2,値2,...,キーn,値n);

ハッシュはキーと値をペアとして使用しますのでリストを指定する場合にはキーと値を交互に指定して下さい。例えば次のように記述します。

my @old = ("加藤", 28, "山下", 19);

これは次のように記述した場合とほぼ同じです。

my @old;
$old{"加藤"} = 28;
$old{"山下"} = 19;

1つのハッシュで管理できる要素数も制限はありません。また宣言時に要素数を指定する必要もありません。

初期化を行う場合の別の形式

ハッシュの初期化にリストを指定する場合、キーと値を交互に並べていきますのでリストが長くなった時にリスト内に記述された値のどちらがキーでどちらが値か分かりにくい時があります。

そこでハッシュに対して初期化を行う場合には次のような記述方法も用意されています。

my @ハッシュ名 = (キー1=>値1, キー2=>値2,..., キーn=>値n);

Perlではリストの中でコンマ(,)と=>は同じ扱いとなります。その為、記述方法は異なりますがリストとしての意味はまったく変わっていません。ただ人間の目から見たときにリスト内に書かれた値のどちらがキーでどちらが値なのかは分かりやすくなります。

その為、ハッシュに対して初期化をする場合には上記の記述方法がよく使用されるようです。リストが長くなるような場合などはより分かりやすくなるように次のような記述もよく行われます。

my @ハッシュ名 = (
  キー1 => 値1,
  キー2 => 値2,
  ... ,
  キーn => 値n
);

サンプルプログラム

では簡単なプログラムで確認して見ます。

test3-1.pl

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

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

print "$address{'鈴木'}¥n";
print "$address{'山田'}¥n";

上記を「test3-1.pl」の名前で保存します(文字コードはUTF-8です)。そしてコマンドプロンプトを起動し、プログラムを保存したディレクトリに移動してから次のように実行して下さい。

ハッシュの初期化

( Written by Tatsuo Ikura )