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. |