P.266
■カンマで区切る

%name = (1101, "青山霞", 1102, "小川橙", 1103, "白瀬藍");
■ => で関連を示す
%name = (1101 => "青山霞", 1102 => "小川橙", 1103 => "白瀬藍");
%name = ( 1101 => "青山霞" , 1102 => "小川橙" , 1103 => "白瀬藍" );
■ key に直接定義する
$a{key} = value
$name{1101} = "青山霞"; $name{1102} = "小川橙"; $name{1103} = "白瀬藍";
例:「最高得点者の表示」
# 名前の登録 %name = (1101 => "青山霞" , 1102 => "小川橙" , 1103 => "白瀬藍"); # 最高得点者の表示 $max = 1103; print "最高得点者は $name{$max} さんでした!";
<実行結果> 最高得点者は 白瀬藍 さんでした!
例1:「key の全てを表示」
# 色の登録 %color = (red => "赤", orange => "橙", yellow => "黄", green => "緑", blue => "青", indigo => "藍", violet => "菫"); # key の全てを取得し表示 @eigo = keys %color; print "@eigo";
<実行結果> blue green indigo violet red yellow orange
例2:「key を sort して表示」
# 色の登録 %color = (red => "赤", orange => "橙", yellow => "黄", green => "緑", blue => "青", indigo => "藍", violet => "菫"); # key を sort して取得し表示 @eigo = sort keys %color; print "@eigo";
<実行結果> blue green indigo orange red violet yellow
例3:「key の数」
# 色の登録 %color = (red => "赤", orange => "橙", yellow => "黄", green => "緑", blue => "青", indigo => "藍", violet => "菫"); # key の個数を取得し表示 $kosu = keys %color; print "$kosu 個";
<実行結果> 7 個
例4:「ループの形での key の取り出し」
# 色の登録 %color = (red => "赤", orange => "橙", yellow => "黄", green => "緑", blue => "青", indigo => "藍", violet => "菫"); # foreach による key の取り出し foreach (keys %color) {print "$_ "}
<実行結果> blue green indigo violet red yellow orange
例1:「value の全てを表示」
# 色の登録 %color = (red => "赤", orange => "橙", yellow => "黄", green => "緑", blue => "青", indigo => "藍", violet => "菫"); # value の全てを取得し表示 @kanji = values %color; print "@kanji";
<実行結果> 青 緑 藍 菫 赤 黄 橙
例2:「value を sort して表示」
# 色の登録 %color = (red => "赤", orange => "橙", yellow => "黄", green => "緑", blue => "青", indigo => "藍", violet => "菫"); # value を sort して取得し表示 @kanji = sort values %color; print "@kanji";
<実行結果> 黄 青 赤 藍 緑 橙 菫
例3:「value の数」
# 色の登録 %color = (red => "赤", orange => "橙", yellow => "黄", green => "緑", blue => "青", indigo => "藍", violet => "菫"); # value の個数を取得し表示 $kosu = values %color; print "$kosu 個";
<実行結果> 7 個
例4:「ループの形での value の取り出し」
# 色の登録 %color = (red => "赤", orange => "橙", yellow => "黄", green => "緑", blue => "青", indigo => "藍", violet => "菫"); # foreach による key の取り出し foreach (values %color) {print "$_ "}
<実行結果> 青 緑 藍 菫 赤 黄 橙
例:「要素対の確認」
# 名前の登録 %name = (1101 => "青山霞", 1102 => "小川橙", 1103 => "白瀬藍"); # key "1103", "1104" の有無 $k1 = 1103; $k2 = 1104; exists $name{$k1}? print "$k1:存在する。\n" : print "$k1:存在しない。\n"; exists $name{$k2}? print "$k2:存在する。\n" : print "$k2:存在しない。\n";
<実行結果> 1103:存在する。 1104:存在しない。
例:「1101 => "青山霞" の削除」
# 名前の登録 %name = (1101 => "青山霞", 1102 => "小川橙", 1103 => "白瀬藍"); # 1101 => "青山霞" の削除 delete $name{1101}; print %name;
<実行結果> 1102小川橙1103白瀬藍
例1:「先頭の要素対の取得」
# 名前の登録 %name = (1101 => "青山霞", 1102 => "小川橙", 1103 => "白瀬藍"); # 先頭の要素対の取得 @pair = each %name; print "@pair";
<実行結果> 1101 青山霞
例2:「全ての要素対の取得」
# 名前の登録 %name = (1101 => "青山霞", 1102 => "小川橙", 1103 => "白瀬藍"); # 全ての要素対を取得し表示 for (1..%name) {push @pairs, each %name} print "@pairs";
<実行結果> 1101 青山霞 1102 小川橙 1103 白瀬藍
例4:「while による全要素対の表示」
# 名前の登録 %name = (1101 => "青山霞", 1102 => "小川橙", 1103 => "白瀬藍"); # 全ての要素対を取得し表示 while (@pair = each %name) {print " @pair \n"; push @pairs, @pair} # 確認のため @pairs の中味を表示 print "\n@pairs";
<実行結果> 1101 青山霞 1102 小川橙 1103 白瀬藍 1101 青山霞 1102 小川橙 1103 白瀬藍
例1:「直接定義による追加」
$a{key} = value; の形で要素対を直接定義し追加します。 # 名前の登録 %name = (1101 => "青山霞", 1102 => "小川橙", 1103 => "白瀬藍"); # 直接定義による追加 $name{1104} = "滄海澪"; # 全要素対の表示 while (@pair = each %name) {print "@pair \n"}
<実行結果> 1101 青山霞 1102 小川橙 1103 白瀬藍 1104 滄海澪
例2:「ループによる追加」
# 名前の登録 %name = (1101 => "青山霞", 1102 => "小川橙", 1103 => "白瀬藍"); # 追加する要素対 @num = (1201..1203); @kan = ("柿木薊", "栗田柚", "杉浦楓"); # 要素の追加 $k = -1; for (@num) {$name{$_} = $kan[++$k]} # 全要素対の表示 while (@pair = each %name) {print "@pair \n"}
<実行結果> 1101 青山霞 1201 柿木薊 1102 小川橙 1202 栗田柚 1103 白瀬藍 1203 杉浦楓
%ax = (%bx, %cx, ・・・);
例:「1組と2組をまとめる」
# 名前の登録 %class_11 = (1101 => "青山霞", 1102 => "小川橙"); %class_12 = (1201 => "柿木薊", 1202 => "栗田柚"); # ハッシュの結合 %gaku_1 = (%class_11, %class_12); # 結合後の全要素対の表示 while (@pair = each %gaku_1) {print "@pair \n"}
<実行結果> 1101 青山霞 1201 柿木薊 1102 小川橙 1202 栗田柚