Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 为什么哈希值要打印两次 问题_Linux_Perl - Fatal编程技术网

Linux 为什么哈希值要打印两次 问题

Linux 为什么哈希值要打印两次 问题,linux,perl,Linux,Perl,哈希值在for(每个)循环中打印两次 代码 输出 问题: 为什么会这样 版本 首先,您迭代散列本身,(%hash)。因此,您将获得键和值,列表 有趣的是,散列具有相同的键和值。所以它打印键和它的值,这是相同的。然后它打印值,然后将其用作键。。。这是一个有效的键,并且具有相同的值。所以它看起来像是打印了两次:) use strict; use warnings; my %Hash; my $x=1; foreach my $item( 1..9 ) { $Hash{$x} =

哈希值在for(每个)循环中打印两次


代码
输出
问题: 为什么会这样


版本 首先,您迭代散列本身,
(%hash)
。因此,您将获得键和值,列表

有趣的是,散列具有相同的键和值。所以它打印键和它的值,这是相同的。然后它打印值,然后将其用作键。。。这是一个有效的键,并且具有相同的值。所以它看起来像是打印了两次:)

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
v5.10.0 built for x86_64-linux-thread-multi