perl - 是否可以使用 while(my($key, $value) ... ) {} 方法按排序顺序遍历哈希?

标签 perl perl-data-structures

对于这种格式的哈希:

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/

相关文章:

linux - 用 perl 创建目录的可靠方法?

perl - 用于设置最低n位的表达式,即使n等于字长也可以使用

regex - 对由固定重复次数组成的组的成分的反向引用

mysql - 在 Rackspace 中移动大型数据库的脚本 - Perl

perl - 如何在不重复二级 key 的情况下打印出复杂的哈希值?

perl - 打印哈希散列中的最低值

perl - 如何访问嵌套 Perl 散列的值?

perl - 如何在 Perl 中访问存储在散列中的数组元素?

arrays - Perl:这是创建唯一数组的正确方法吗?

json - 访问解码为 HASH 和哈希引用数组的 JSON