Perl是否以相反的顺序打印数组元素?

时间:2012-06-08 11:28:21

标签: perl

我很惊讶Perl中的以下哈希数组

#!/usr/bin/perl

print "content-type: text/html \n\n";

# DEFINE A HASH
%coins = ( "Quarter" , 25,
           "Dime" ,    10,
           "Nickel",    5 );

# LOOP THROUGH IT
while (($key, $value) = each(%coins)){
  print $key.", ".$value."<br />";
}

产生以下输出

Nickel, 5
Dime, 10
Quarter, 25

我知道Perl有能力通过使用负数索引来访问最后的元素,但是这里我们没有使用负数作为索引,那么为什么它以相反的顺序打印哈希数组的内容?

1 个答案:

答案 0 :(得分:11)

那不是数组,而是哈希。这意味着内部存储的内容是密钥的哈希值,而不是密钥的顺序。没有办法按照添加顺序将它们恢复。如果您希望它们按关键顺序排列,则需要

for my $key (sort keys %coins)
{
  print $key, $coins{$key};
}