【发布时间】:2025-11-21 05:35:04
【问题描述】:
对于这种格式的哈希:
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 格式按照每个项目的哈希中的“order”键指定的顺序遍历它们?
(我知道我可以先对键进行排序,然后 foreach 循环遍历它。只是想看看是否有更清洁的方法。)
【问题讨论】:
-
Tie::IxHash模块可能值得一看,但您必须更改代码以按照与“订单”键匹配的顺序插入哈希,或调用Tie::IxHash@ 987654326@ 方法有时可以将所有内容按正确的顺序排列。