我有以下数据结构
my %HoH = {
'foo1' => {
'bam' => 1,
'zip' => 0,
},
'foo2' => {
'bam' => 0,
'zip' => 1,
'boo' => 1
}
};
我想按存储在“zip”中的值从大到小对 KEY1(foo1 或 foo2)进行排序。
这就是我的做法。
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);
我收到了一个奇怪的警告:在 test.pl 第 6 行中找到了预期大小相同的列表的参考。也print Dumper(\@sorted);
正在打印
$VAR1 = [
'HASH(0x1b542a8)'
];
什么时候应该打印
$VAR1 = [
['foo2', 'foo1']
];
因为foo2
有 1zip
并且foo1
有 0 zip
。