私は次のデータ構造を持っています
my %HoH = {
'foo1' => {
'bam' => 1,
'zip' => 0,
},
'foo2' => {
'bam' => 0,
'zip' => 1,
'boo' => 1
}
};
KEY1 (foo1 または foo2) を 'zip' に保存されている VALUE で最大から最小の順に並べ替えたいと思います。
これが私がやっている方法です。
use strict; use warnings;
use Data::Dumper;
my @sorted;
foreach my $KEY1 (keys %HoH) {
# sort KEY1 by the value 'zip' maps to in descending order
@sorted = sort {$HoH{$KEY1}{'zip'}{$b} <=>
$HoH{$KEY1}{'zip'}{$a}} keys %HoH;
}
print Dumper(\@sorted);
奇妙な警告が表示されます: Reference found where even-sized list expected at test.pl line 6. またprint Dumper(\@sorted);
、印刷しています
$VAR1 = [
'HASH(0x1b542a8)'
];
いつ印刷すべきか
$VAR1 = [
['foo2', 'foo1']
];
foo2
は 1zip
であり、0foo1
ですzip
。