jqueryui


★ハッシュのソート2
my %foo;
$foo{Mon} = 10;
$foo{Tue} = 200;
$foo{Wed} = 30;
$foo{Tur} = 1000;
$foo{Fri} = 20;
$foo{Sat} = 50;
$foo{Sun} = 1;
------------------------------
for my $key (keys %foo) {
print $key:$foo{$key}¥n ;
}
------------------------------

実行結果(例)
Mon:10
Tue:200
Fri:20
Tur:1000
Wed:30
Sun:1
Sat:50

このハッシュについて、キーと値のそれぞれでソートして出力したいのですが、具体的な方法が分かりません。
2.ハッシュのキーでソートする
ハッシュのキーでソートするには、for文のハッシュ名の左側に「sort keys」を追加します。

------------------------------
for my $key (sort keys %foo) {
print $key:$foo{$key}¥n ;
}
------------------------------
実行結果
Fri:20
Mon:10
Sat:50
Sun:1
Tue:200
Tur:1000
Wed:30



4.ハッシュの値でソートする
ハッシュの値でソートするには、for文のハッシュ名の左側に「sort values」を追加します。
------------------------------
for my $key (sort values %foo) {
print $value¥n ;
}
------------------------------
実行結果
1
10
1000
20
200
30
50

6.ハッシュを数値でソートする
4項と5項は数字が期待通りに並んでいません。これはデフォルトのソートが文字列として扱われるためです。
数値としてソートするには、数値でのソート条件「&#123;&#36;a <=> &#36;b&#125;」を記述します。
------------------------------
for my &#36;value (sort &#123;&#36;a <=> &#36;b&#125; values %foo) &#123;
print &#36;value&yen;n ;
&#125;
------------------------------
実行結果
1
10
20
30
50
200
1000