0

我对 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 有能力通过使用负数索引来访问最后一个元素,但是这里我们没有使用负数作为索引,那么为什么它会以相反的顺序打印哈希数组的内容呢?

4

1 回答 1

11

那不是数组,那是哈希。这意味着事物在内部存储为键的哈希值,而不是键的顺序。没有办法让它们按照添加的顺序返回。如果您希望它们按密钥顺序排列,则需要

for my $key (sort keys %coins)
{
  print $key, $coins{$key};
}
于 2012-06-08T11:31:25.373 回答