ハッシュのキーでソートするのはさほど難しくないが、値で並べ替えるにはどうすればよいだろう?同様にsort関数を用いれば良い。
サンプル
;# ;#ハッシュを値でソートして表示 ;# #------------------------------# #初期化する #------------------------------# %hash = ( 'A' => '1_オレンジ' , 'B' => '4_りんご' , 'C' => '2_マスカット' , 'D' => '3_バナナ' ); #------------------------------# #値で並べ替えて表示 #------------------------------# foreach my $name (sort { $hash{$a} <=> $hash{$b} } keys %hash){ print "$name,$hash{$name}\n"; }
実行結果
A,1_オレンジ C,2_マスカット D,3_バナナ B,4_りんご
逆順に(反転して)表示したければ、sort { $hash{$b} <=> $hash{$a} }
とすればよい。数値として比較を行いたいのなら<=>
の部分をcmp
にする。