【发布时间】:2018-04-07 07:52:24
【问题描述】:
我有两个可以包含相同键的哈希。我试图以这样一种方式合并两个哈希,如果密钥存在于两个哈希中,我想在各自的哈希中添加值。
my %hash1= ();
$hash1{'apple'} = 10;
$hash1{'banana'} = 15;
$hash1{'kiwi'} = 20;
my %sourceHash = ();
$sourceHash{'apple'} = 12;
$sourceHash{'orange'} = 13;
$sourceHash{'banana'} = 5;
mergeHash(\%hash1, \%sourceHash);
sub mergeHash {
my $hash1 = shift;
my $hash2 = shift;
foreach my $key (keys %{$hash1})
{
if (exists $hash2->{$key}) {
${hash2}->{$key} = $hash1->{$key} + $hash2->{$key};
} else {
${hash2}->{$key} = $hash1->{$key};
}
}
}
我希望 hash1 的结果是
hash1{'apple'} = 22;
hash1{'orange'} = 13;
hash1{'banana'} = 20;
hash1{'kiwi'} = 20;
但是我得到一个异常说不能修改标量赋值中的常量项。我做错了什么?
【问题讨论】:
-
程序对我来说运行良好。
-
您发布的内容并未证明您声称的问题。请解决您的问题。 minimal reproducible example