ハッシュ配列はキーと値のペアを保持するデータ型です。通常の配列はインデックスとして数値を使いますが、ハッシュ配列は文字列を使います。
ハッシュ配列を宣言するには、変数の先頭に%を付けます。空のハッシュ配列を宣言するには以下のようにします。
my %hash;
ハッシュ配列の宣言時にリストを格納して初期化することができます。
my %hash = ("foo", "bar"); my %hash2 = ("foo", "bar", "hoge", "fuga");
また、hashという関数を使ってハッシュ配列を生成することができます。
my %hash = hash("foo", "bar");
リストだけでなく、ペアで初期化することもできます。
my %hash1 = ("foo" => "bar"); my $pair = ("hoge" => "fuga"); my %hash2 = $pair;
ハッシュ配列の値を取得するには、ハッシュ配列に{"キー名"}を付けます。以下の例ではfooというキーに対応する値を取得します。
my $value = %hash{"foo"};
別記法として、<キー名>という形式でも取得できます。
my $value = %hash<foo>;
変数とインデックスの間にドットを入れることもできます。
my $value = %hash.{"foo"}; my $value = %hash.<foo>;
値を格納する場合も同様です。
%hash{"foo"} = "bar"; %hash<hoge> = "fuga";
キー名としてリストを渡すと、複数の値をリストとして取得できます。
my @values1 = %hash{"foo", "hoge"}; my @values2 = %hash<foo hoge>;
hash()ハッシュ配列を生成します。コンテキストによって生成される値の種類が変化します。
my %hash = hash("foo" => "bar"); # 通常のハッシュ配列 my $hash = hash("hoge" => "fuga"); # 配列のリファレンス
%hash.keys()keys(%hash)キーのリストを返します。
%hash.values()values(%hash)値のリストを返します。
%hash.kv()kv(%hash)キーと値のリストを返します。
%hash.pairs()pairs(%hash)キーと値をペアのリストとして返します。
%hash.elems()elems(%hash)ハッシュ配列の要素数を返します。
%hash.delete("key")ハッシュ配列の要素を削除し、削除された値を返します。
%hash.exists("key")ハッシュ配列にキーが存在すれば真を返します。