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

如何在两点之间顺序循环哈希(perl),perl,hash,iteration,Perl,Hash,Iteration,我得到了一个具有以下形式键的散列:A23,A03,A200,等等 据我所知,散列中的键不是完全连续的。如果我首先通过添加A23、A03和A200来构建散列,那么我无法确定在迭代散列时它们的顺序是否正确 我如何能够从散列中的一个键循环到另一个键,以“添加”顺序访问这些键。如果没有哈希“添加”顺序,那么我可以按字母顺序对键进行排序。是的,不维护键插入顺序。有关基于模块的解决方案,请参阅 或者,您可以在密钥中建立索引,并在检索时进行排序: %hash = ( '01:A23' => 1,

我得到了一个具有以下形式键的散列:
A23
A03
A200
,等等

据我所知,散列中的键不是完全连续的。如果我首先通过添加
A23
A03
A200
来构建散列,那么我无法确定在迭代散列时它们的顺序是否正确


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

是的,不维护键插入顺序。有关基于模块的解决方案,请参阅

或者,您可以在密钥中建立索引,并在检索时进行排序:

%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不跟踪哈希的添加顺序,所以您要么单独跟踪,要么返回字母顺序
对于我的$key(排序键%hash){…}
是您要查找的要点

另外,
my@keys=qw(A23 A03 A200);对于我的$key(@keys){…}