当我使用dumper时,我有一个看起来像这样的哈希:
{
hello => {
pqr => {
a => 455,
b => 52,
c => "hello"
},
lmn => {
a => 3,
b => 39,
c => "hi"
}
},
hi => {
suv => {
a => 21,
b => 36,
c => "well"
},
xyz => {
a => 32,
b => 56,
c => "done"
}
}
}
我想根据“b”的值进行排序。
输出应该是:
hello.lmn.b = 39 hello.pqr.b = 52
hi.suv.b = 36 hi.xyz.b = 56
答案 0 :(得分:1)
您应该使用sort
来排序列表。在这种情况下,哈希是嵌套的,因此它在第一级密钥处迭代,然后根据b
在第三级包含的值使用第二级密钥进行排序。
for my $k1 (keys %hash) {
for my $k2 (sort {$hash{$k1}{$a}{'b'} <=> $hash{$k1}{$b}{'b'}} keys %{$hash{$k1}}) {
print "$k1.$k2.b = ",$hash{$k1}{$k2}{'b'}, " ";
}
print "\n";
}