Как я могу присоединиться к двум хэшам в Perl без использования цикла?

Как добавить хэш a в хэш b в 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;