我已经搜索和搜索,但我找不到任何我发现可以工作的代码。很抱歉,如果这是在重复旧的情况,但我现在花了 2 天时间试图让这 10 行工作,但我已经束手无策了 :-(
我正在运行 Perl 5.8.8。
我想在 Perl 中填充一个哈希数组,使其包含我正在更新的单个哈希变量的多个副本。我的代码在这里:
use strict;
use warnings;
my @array;
my %tempHash = (state => "apple", symbol => "54", memberId => "12345");
push(@array, \%tempHash);
%tempHash = (state => "tiger", symbol => "22", memberId => "12345");
push(@array, \%tempHash);
%tempHash = (state => "table", symbol => "37", memberId => "12345");
push(@array, \%tempHash);
printf("%p %p %p\n", $array[0], $array[1], $array[2]);
foreach my $entry (@array){
printf("state: %s\n", $entry->{state});
printf("memberId: %s\n", $entry->{memberId});
printf("symbol: %s\n\n", $entry->{symbol});
}
这会产生以下输出:
1868954 18688d0 18688c4
state: table
memberId: 12345
symbol: 37
state: table
memberId: 12345
symbol: 37
state: table
memberId: 12345
symbol: 37
所以在我看来,数组中的标量值是不同的。然而,这些标量指向的哈希值都是相同的。
在此先感谢您的帮助。