我很惊讶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有能力通过使用负数索引来访问最后的元素,但是这里我们没有使用负数作为索引,那么为什么它以相反的顺序打印哈希数组的内容?
答案 0 :(得分:11)
那不是数组,而是哈希。这意味着内部存储的内容是密钥的哈希值,而不是密钥的顺序。没有办法按照添加顺序将它们恢复。如果您希望它们按关键顺序排列,则需要
for my $key (sort keys %coins)
{
print $key, $coins{$key};
}