如何在两点之间顺序循环哈希(perl)

时间:2015-07-07 00:04:27

标签: perl hash iteration

我有一个哈希,其中包含以下格式的密钥:A23A03A200等。

据我了解,散列中的键不完全是顺序的。如果我通过首先添加A23A03A200来构建哈希,那么当我迭代哈希时,我无法确定它们是否会按顺序排列 - 是否正确?< / p>

我如何能够从哈希中的一个键循环到另一个键,以“添加”顺序访问键。如果没有带有哈希的“添加”顺序,那么我可以按字母顺序对键进行排序。

2 个答案:

答案 0 :(得分:1)

Perl没有跟踪哈希的添加顺序,因此您必须单独跟踪,或者只是按字母顺序回溯。 for my $key (sort keys %hash) {...}是您正在寻找的要点。

答案 1 :(得分:-2)

是,不维护密钥广告订单。有关基于模块的解决方案,请参阅http://search.cpan.org/~chorny/Tie-IxHash-1.23/lib/Tie/IxHash.pm

或者您可以在密钥中构建索引并对检索进行排序:

%hash = (
    '01:A23' => 1,
    '02:A03' => 2,
    '03:A200' => 3
);

foreach $one_key (sort keys %hash ) {

    print("KEY : $one_key  VALUE :$hash{$one_key}\n");
}

输出是:

KEY : 01:A23  VALUE :1
KEY : 02:A03  VALUE :2
KEY : 03:A200  VALUE :3