ハッシュのキーを逆順にソートする - Perl

ハッシュのキーを並べ替えた後、反転させるにはこれも文字通り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 ){