<連想配列ならびにハッシュテーブル>

>>ハッシュとは何者か

Perlにおけるハッシュとは、「キー」と「値」を一組にして保持する、内部順序を(少なくとも外見には)持たないデータ構造のこと。

>>あの、もうちょっと具体的に

たとえば、ハッシュ"和英辞典"があったとして、このハッシュに「物理学」と呼びかけると「physics」と答えてくれる。 この時、「物理学」がキーであり、「physics」が値となる。

>>で、なにがいいの?

すぐに思い付くのは、「存在確認の容易さ」。
Perlの場合、ハッシュに対して働く関数がいくつか用意されている。 その中にあるハッシュが与えられたキーを持つか否かを判定するものがある。 例えば、前述の和英辞典君に対して、「不可能」という項目があるかどうかを聞いてくれるわけだ。 載ってなければそれは欠陥辞書であるとして、相応の処理をする。
もし尋ねる相手が単なる配列だったら大変だ。自前でループを用意して、先頭から順繰りに比較していくしかない (ただしperlの場合内部的には同じことをやっているはず)。 順序構造を放棄する利点はここにある。

>>注意

同じキーが複数あってはいけない。
ハッシュはキーで値を探すので、複数のキーがあると何を返してよいか判らなくなる。 もし既にあるキーと同じキーを後から付け加えようとした場合、上書きされる。

>>使用例

本格的に使ったことが無いので、ひとまず手抜きな奴を。
%aster;

$aster{'sun'} = 'star';
%aster = ('mercury','planet', 'venus', 'planet');
%aster = ('earth'=>'planet',
          'moon'=>'satellite');

print "$aster{'moon'}\n"; #"satellite"と表示される
exists $aster{sun}; #trueを返す
exists $aster{mars}; #falseを返す

accend->Perl->labnote->index page