ここで私が間違っていることを誰かに教えてもらえますか? 考えられる配列/ハッシュタイプとソートクエリの可能な組み合わせをほぼすべて試しましたが、これを機能させることができないようです。
以下のハッシュ参照を次のようにソートしようとしていますvalue1
:
my $test = {
'1' => { 'value1' => '0.001000', 'value2' => 'red'},
'2' => { 'value1' => '0.005000', 'value2' => 'blue'},
'3' => { 'value1' => '0.002000', 'value2' => 'green'},
'7' => { 'value1' => '0.002243', 'value2' => 'violet'},
'9' => { 'value1' => '0.001005', 'value2' => 'yellow'},
'20' => { 'value1' => '0.0010200', 'value2' => 'purple'}
};
この並べ替えループを使用する:
foreach (sort { $test{$a}->{'value1'} <=> $test{$b}->{'value1'} } keys \%{$test} ){
print "key: $_ value: $test->{$_}->{'value1'}\n"
}
私は得る:
key: 1 value: 0.001000
key: 3 value: 0.002000
key: 7 value: 0.002243
key: 9 value: 0.001005
key: 2 value: 0.005000
key: 20 value: 0.0010200
整数で試してみましたが、同じことが起こるようです。
実際にハッシュをループする必要はありません。後で使用するために注文したいだけです。ハッシュの配列では簡単に実行できますが、ハッシュのハッシュではそうではありません..?