如何在两点之间顺序循环散列(perl)

How to loop through a hash sequentially between two points (perl)

我有一个具有以下形式的键的散列:A23A03A200

据我了解,哈希中的键并不完全按顺序排列。如果我通过首先添加 A23A03A200 来构建散列,那么当我遍历散列时,我无法确定它们会按该顺序排列 - 对吗?

我如何才能从散列中的一个键循环到另一个键,以 "added" 顺序访问这些键。如果没有 "added" order with hashes 这样的东西,那么我可以按字母顺序对键进行排序。

是的,密钥插入顺序未维护。对于基于模块的解决方案,请参阅 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

Perl 不跟踪散列的添加顺序,因此您要么必须单独跟踪它,要么退回到按字母顺序排列。 for my $key (sort keys %hash) {...} 是您要查找的要点。