http://www.sw.it.aoyama.ac.jp/2005/Programming%20Basics%20I/lecture10.html
© 2005 Martin J. Dürst 青山学院大学
[]
内) には数しか使えない番号から名前を引く (配列使用):
$months[1] = "January";
...
名前から番号を引く (ハッシュ使用):
$months{'January'} = 1;
...
ハッシュ全体: %hash
(%
はハッシュの「冠詞」でかる)
ハッシュの一個の要素: $hash{'key'}
(「単数」(スカラ) なので「冠詞」は $
に変更)
(ハッシュの「番地」はキー (鍵) と言う)
$months
と $months[$n]
と
$months{$m}
は別物
$months
と @months
と %months
は別物
リストをハッシュに変換する (例えば代入する) 時に、リストはキーと値の繰り返しと見なされる:
%months = ('January', 1, 'February', 2, 'March', 3, ...);
関連をもっとわかりやすくするには =>
を使える:
%months = ('January' => 1, 'February' => 2, 'March' => 3,
...);
裸のワード (bareword) が使える:
%months = (January => 1, February => 2, March => 3,
...);
基本的な方法: foreach
を使う:
foreach $key (keys %hash) { ... }
foreach $key (sort keys %hash) { ... }
foreach $value (values %hash) { ... }
存在のチェック:
if (defined $hash{"key"}) { ... }
完全な取消:
delete $hash{'key'};
値を無定義にするだけ:
undef $hash{'key'};
ハッシュと配列の要素の参照は二重以上使える:
$BMI{'Konishiki'}{weight} = 250;
$months[6]{sales} = 150000; # 売り上げ
$monthlength[2]{leapyear} = 29; # 閏年
注意: 同じ変数名を使うには限界がある (例:
$m[1]{xxx}
と $m[1][5]
は同時には使えない)