ハッシュ(1) ハッシュの基礎

少し余裕がでてきたので、2歩下がってハッシュを勉強します。どうやらPerlとハッシュは切っても切れない縁があるようです。
元々ハッシュは連想配列(Associative array)と呼ばれていたのですが、タイプするのが面倒だという理由でハッシュ(Hash)と呼ぶようになったらしいです。「ハッシュ」という呼び方は、連想配列がハッシュ表で実装されているからとか。
ハッシュはリテラルは存在せず変数だけ。変数は % の後ろに変数名をつけると、ハッシュ変数として扱われます。
連想配列とも呼ばれる通り、ハッシュの機能は文字列「キー」に対応する「値」を格納する事。つまり「あれと言ったらこれ」というペア関係を記憶できます。「値」はスカラー値なら何でもいいのかな?
ハッシュに格納されている値を参照するには、ハッシュ変数の後ろに {キー} と付ければ、キーに対応する値を得る事ができます。左辺に置いて値を代入する事も可能です。配列の [数字] が {文字列} になった感じでしょうか。ちなみに、文字列はクォートする必要がありません。
また、キーで参照する場合、配列と同じように取り出した値はスカラー値なので「$hash{key}」のように、頭に「%」ではなく「$」を付けます。
ハッシュ変数に一括で値を代入する方法は

my %hash = ('apple', 'red', 'banana', 'yellow', 'melon', 'green');

のようにリストを使う方法(この場合「appleはred」「bananaはyellow」「melonはgreen」という対応関係が記録される)や、

my %hash = (apple => 'red', banana => 'yellow', melon => 'green');

と、シンタックスシュガーである「=>」を使う方法があります。("A", と A=> が等価なのでキーはクォートする必要がない)

my %hash;
$hash{apple}  = 'red';
$hash{banana} = 'yellow';
$hash{melon}  = 'green';

も同じ意味ですね。
動作を確認してみます。

# hash1.pl
 
my %fruits_color = (
	apple  => 'red',
	banana => 'yellow',
	melon  => 'green',
);
 
print "An apple is $fruits_color{apple}.\n";
print "A banana is $fruits_color{banana}.\n";
print "A melon is $fruits_color{melon}\n";

果物に対応する色を格納したハッシュ %fruits_color を用意して、それぞれの果物に対応する色を表示しています。
実行結果です。

An apple is red.
A banana is yellow.
A melon is green

上手くいきました。「=>」を使うとコードが読みやすくていいですね。