Как добавить хэш a в хэш b в Perl без использования цикла?
Как я могу присоединиться к двум хэшам в Perl без использования цикла?
Ответ 1
Если вы подразумеваете объединение данных, просто выполните:
%c = (%a, %b);
Ответ 2
Вы также можете использовать срезы для объединения одного хэша в другой:
@a{keys %b} = values %b;
Обратите внимание, что элементы в% b будут перезаписывать элементы в% a, имеющие один и тот же ключ.
Ответ 3
Это объединит хэши, а также учёт записей undefined, поэтому они не заменят содержимое.
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;
}
Ответ 4
my %c = %a;
map {$c{$_} = $b{$_}} keys %b;