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 に答える