为什么第二次调用printHash时哈希为空?
my %hash = ();
addToHash(\%hash);
printHash(\%hash);
sub addToHash {
my %hash = %{$_[0]};
$hash{"test"} = "test";
printHash(\%hash);
}
sub printHash {
print "printHash: \n";
my %hash = %{$_[0]};
foreach my $key (keys %hash) {
print "key: $key, value: $hash{$key}\n";
}
}
输出:
printHash:
键:测试,值:测试
printHash:
最佳答案
在
sub addToHash {
my %hash = %{$_[0]};
$hash{"test"} = "test";
printHash(\%hash);
}
my %hash
创建一个新的哈希,您可以将参数引用的哈希复制到其中。你要sub addToHash {
my $hr = $_[0];
$hr->{"test"} = "test";
printHash($hr);
}
为了修改原始哈希。
关于perl - perl:子例程中添加的哈希条目丢失,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12288989/