ハッシュのキーでソートする - Perl

ハッシュのキーで並べ替えて表示するには、sort関数でkeysの値を並べ替えればよい。 以下はハッシュのキーを文字列としてソートする方法になる。

サンプル(文字列)

;#
;#ハッシュをソートして表示(文字としてソート)
;#

#------------------------------#
#初期化する
#------------------------------#
%hash = (
      'orange' => 'オレンジ'
    , 'apple'  => 'りんご'
    , 'muscat' => 'マスカット'
    , 'banana' => 'バナナ'
);

#------------------------------#
#並べ替えて表示
#------------------------------#
foreach my $name ( sort keys %hash ){
    print "$name,$hash{$name}\n";
}

実行結果

apple,りんご
banana,バナナ
muscat,マスカット
orange,オレンジ

もし、数値としてハッシュのキーをソートしたいなら次のように書く。

サンプル(数値)

;#
;#ハッシュをソートして表示(数値としてソート)
;#

#------------------------------#
#初期化する
#------------------------------#
%hash = (
      '3' => 'オレンジ'
    , '4'  => 'りんご'
    , '1' => 'マスカット'
    , '2' => 'バナナ'

);

#------------------------------#
#並べ替えて表示
#------------------------------#
foreach my $name ( sort { $a <=> $b } keys %hash ){
    print "$name,$hash{$name}\n";
}

実行結果

1,マスカット
2,バナナ
3,オレンジ
4,りんご