2016-10-05 13 views
0

問題

ハッシュ値は(each)ループで2回印刷されます。ハッシュ値が2回印刷されるのはなぜですか


コード

use strict; 
use warnings; 

my %Hash; 

my $x=1; 

foreach my $item(1..9) { 
    $Hash{$x} = $x; 
    print scalar keys %Hash,",$item,",$x++,"\n" 
} 
$x=1; 
foreach my $iteml(%Hash){ 
     print $x++,"\n"; 
     print "||||$iteml------$Hash{$iteml}||||\n"; 
} 

print "@{[%Hash]}\n"; 

出力

1,1,1 
2,2,2 
3,3,3 
4,4,4 
5,5,5 
6,6,6 
7,7,7 
8,8,8 
9,9,9 
1 
||||6------6|||| 
2 
||||6------6|||| 
3 
||||3------3|||| 
4 
||||3------3|||| 
5 
||||7------7|||| 
6 
||||7------7|||| 
7 
||||9------9|||| 
8 
||||9------9|||| 
9 
||||2------2|||| 
10 
||||2------2|||| 
11 
||||8------8|||| 
12 
||||8------8|||| 
13 
||||1------1|||| 
14 
||||1------1|||| 
15 
||||4------4|||| 
16 
||||4------4|||| 
17 
||||5------5|||| 
18 
||||5------5|||| 
6 6 3 3 7 7 9 9 2 2 8 8 1 1 4 4 5 5 

質問

ですが、なぜでしょうか?


バージョン1の場合

v5.10.0 built for x86_64-linux-thread-multi 

答えて

9

、あなたは(%Hash)上でハッシュ自体を繰り返します。キーと値、リストを取得しています。

興味深いのは、ハッシュが同じキーと値を持つことです。それで、キーとその値を表示します。これは同じです。次に、値を出力し、それをキーとして使用します。これは、有効なキーであり、同じ値です。だからそれは2回印刷されているように見えます:)

+2

私は馬鹿です、乾杯! – 123

関連する問題