ハッシュのキーを並べ替えた後、反転させるにはこれも文字通りreverse関数を使用すればよい。
サンプル(文字)
以下はハッシュのキーを文字列としてソートし、それを逆順に並べ替えている。
;# ;#ハッシュをソートして表示(文字としてソート) ;# #------------------------------# #初期化する #------------------------------# %hash = ( 'orange' => 'オレンジ' , 'apple' => 'りんご' , 'muscat' => 'マスカット' , 'banana' => 'バナナ' ); #------------------------------# #並べ替えて表示 #------------------------------# foreach my $name ( reverse sort keys %hash ){ print "$name,$hash{$name}\n"; }
実行結果
orange,オレンジ muscat,マスカット banana,バナナ apple,りんご
サンプル(数値)
数字としてハッシュのキーをソートし、反転させたいなら次のように書く。
;# ;#ハッシュをソートして表示(数値としてソート) ;# #------------------------------# #初期化する #------------------------------# %hash = ( '3' => 'オレンジ' , '4' => 'りんご' , '1' => 'マスカット' , '2' => 'バナナ' ); #------------------------------# #並べ替えて表示 #------------------------------# foreach my $name ( reverse sort { $a <=> $b } keys %hash ){ print "$name,$hash{$name}\n"; }
実行結果
4,りんご 3,オレンジ 2,バナナ 1,マスカット
もしくはforeachの部分を次のようにする。$aと$bを逆にしただけ。
foreach my $name (sort { $b <=> $a } keys %hash ){