ためになるホームページ お問い合わせ




TOP > Perl > ハッシュ
ハッシュとは?
データ構造の一つで、配列と同じように任意の個数を格納して自由に取り出せる。格納した値の出し入れをするには、数値の代わりに名前(任意)を使用する。

ハッシュにアクセスする
ハッシュの要素にアクセスするには、以下の書式を使用する。また、ハッシュのキーが存在しない場合はundefを返す。
(書式)$ハッシュ名{キー名};

ハッシュにアクセスする例
$hash{"first"} = "abc";
$hash{"second"} = "def";
$hash{"thrid"} = "ghi";
$tmp = $hash{"forth"};     #undefを返す


ハッシュの宣言と代入
配列と同じようにハッシュを宣言するには、変数名の前に%をつける。ハッシュにキーと値を入れるには、「キー, 値」の順で代入する。
ハッシュをリストコンテキストで評価すると、キー, 値のリストが生成される。但し、格納した順とは異なる表示となる。このようにハッシュをキーと値のリストにする事を「ハッシュをほどく」という。
ハッシュをハッシュに代入する事もできるし、キー値と値をひっくり返してハッシュを作る事もできる(値がユニークの時のみ。もし、ユニークでない時は、一番最後の値が上書きする)。

ハッシュに代入する例
%hash = ("first", 0, "second", 1, 3, "thrid");     #キー, 値の順に並べる
@array = %hash;                                    #リストコンテキスト(ハッシュをほどく)
%r_hash = reverse %hash;                           #%hashをほどいて、キー,値を値,キーにしてハッシュを作成


太い矢印(=>)
コンマ(,)と同じ意味で、太い矢印(=>)が使える。

太い矢印を使って、ハッシュを作成する例
%hash = (
  "first" => "abc",
  "second" => "def",
  "thrid" => "ghi"
  );


keys関数とvalues関数
keys関数は、キー値のリストを作成し、values関数は値のリストを作成する。

keys関数とvalues関数の例
%hash = (
  "first" => "abc",
  "second" => "def",
  "thrid" => "ghi"
  );
@key = keys %hash;
@val = values %hash;
$val = keys %hash;       #スカラーコンテキスト(キー,値のペアの個数を返す。この場合は3)


each関数
ハッシュ全体に対して繰り返し行う時に使う。each関数は、キー・値のペアをリストとして返す。全ての要素のアクセスが終わった際に、空リストを返す。

each関数の例
while (($key, $val) = each %hash)
{
  print "$key => $val\n";
}
foreach $key (sort keys %hash)
{
  print "$key => $hash{$key}\n";
}


exists関数
あるキーがハッシュの中に存在するかを確認する。値の真偽に関わらず、キーが存在すれば真を返す。

exists関数の例
if (exists $hash{"key"})
{
  print "keyは存在します。";
}


delete関数
ハッシュから指定するキーとその値を削除する。指定したキーが存在しない場合は、警告やエラーは発生しない。

delete関数の例
delete $hash{"key"};      #キー「key」の削除。それに伴う値も削除






Copyright 2007 ためになるホームページ All Rights Reserved.