对于这种格式的哈希:
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 循环。只是想看看是否有更清洁的方法来做到这一点。)