ハッシュを初期化する

ハッシュを利用するには宣言を行ったあとで要素に対して値とキーのペアを格納していきますが、変数などと同じようにハッシュについても宣言と同時に値とキーのペアを格納する初期化を行うことができます。ここでは Perl でハッシュの初期化を行う方法について解説します。

(Last modified: )

ハッシュを初期化する

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

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
);
サンプルコード

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

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";

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

perl sample.pl

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

ハッシュを初期化する(1)

ハッシュを宣言すると同時に初期化し、そのあとでキーを指定して値を取得しました。

-- --

Perl でハッシュの初期化を行う方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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