【发布时间】:2010-11-17 13:00:12
【问题描述】:
如何在不使用循环的情况下在 Perl 中将哈希 a 附加到哈希 b?
【问题讨论】:
-
为什么不想使用循环?
如何在不使用循环的情况下在 Perl 中将哈希 a 附加到哈希 b?
【问题讨论】:
如果您的意思是合并他们的数据,那就这样做:
%c = (%a, %b);
【讨论】:
您还可以使用切片将一个散列合并到另一个散列中:
@a{keys %b} = values %b;
请注意,%b 中的项目将覆盖 %a 中具有相同键的项目。
【讨论】:
这将合并哈希并考虑未定义的条目,因此它们不会替换内容。
my %hash = merge(\%hash1, \%hash2, \%hash3);
sub merge {
my %result;
%result = %{ $_[0] };
shift;
foreach my $ref (@_) {
for my $key ( keys %{$ref} ) {
if ( defined $ref->{$key} ) {
$result{$key} = $ref->{$key};
}
}
}
return %result;
}
【讨论】:
my %c = %a;
map {$c{$_} = $b{$_}} keys %b;
【讨论】: