对于这种格式的哈希:
my $itemHash = {
tag1 => {
name => "Item 1",
order => 1,
enabled => 1,
},
tag2 => {
name => "Item 2",
order => 2,
enabled => 0,
},
tag3 => {
name => "Item 3",
order => 3,
enabled => 1,
},
...
}
我有这段代码可以正确地遍历哈希:
keys %$itemHash; # Resets the iterator
while(my($tag, $item) = each %$itemHash) {
print "$tag is $item->{'name'}"
}
然而,这些项目的迭代顺序似乎非常随机。是否可以使用相同的
while
格式以按每个项目的散列中的“订单”键指定的顺序遍历它们?(我知道我可以先对键进行排序,然后通过它进行 foreach 循环。只是想看看是否有更干净的方法来做到这一点。)
最佳答案
您可以执行以下操作:
foreach my $key (sort keys %{$itemHash}) {
print "$key : " . $itemHash->{$key}{name} . "\n";
}
关于perl - 是否可以使用 while(my($key, $value) ... ) {} 方法按排序顺序遍历哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12592637/