- ベストアンサー
Perlのハッシュ変数のソートについて
ハッシュ変数の並べ替えをやりたいです。ただ、値の長さでソートをしたいのです。 my %tan_syouhin = ( '佐賀' => 'あいうえお', '滋賀' => 'かき', '無我' => 'さしすせそそそ', '千賀' => 'うりるら', '日我' => 'ぜるだんぽ' ); というハッシュ変数があって「値の長さ」でソートするにはどうしたら良いでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こうですかね。勘違いしていたらすみません ハッシュの値でソートしたキー配列 my %s = ( ... ); my @v = sort { length $s{$b} <=> length $s{$a} } keys %s; キー配列からハッシュを参照 foreach (@v) { printf "%s => %s\n", $_, $s{$_}; }
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
「データの順序」というものはハッシュでは意味を持たないので, 何をどう並べ替えようとハッシュに入れたらその順序がどうなるかはわかりません. で, やっぱり「何をソートしたいのか」がわからん. 「どういう結果を期待しているのか」も書いてくれないし....
補足
説明が下手ですいません。 foreach で処理を回したい時、 '無我' => 'さしすせそそそ', '日我' => 'ぜるだんぽ', '佐賀' => 'あいうえお', '千賀' => 'うりるら', '滋賀' => 'かき', という順番で処理がしたいのです。
- Tacosan
- ベストアンサー率23% (3656/15482)
何をソートしたいのでしょうか? つまり, どのような結果を期待しているのでしょうか?
補足
ハッシュに入っている値の文字列の長さでソートをしたいのです、説明不足ですいません。 その結果をまたハッシュに入れ直したいのですが、その場合は順番はバラバラになるのでしょうか?
お礼
ありがとうございました! さっそく組み込んでみます!!