Как я могу объединить два хэша в Perl без использования цикла? - PullRequest
13 голосов
/ 07 августа 2009

Как добавить хеш a к хешу b в Perl без использования цикла?

Ответы [ 4 ]

32 голосов
/ 07 августа 2009

Если вы хотите взять объединение своих данных, просто выполните:

%c = (%a, %b);
24 голосов
/ 07 августа 2009

Вы также можете использовать фрагменты для объединения одного хеша в другой:

@a{keys %b} = values %b;

Обратите внимание, что элементы в% b будут перезаписывать элементы в% a с одинаковым ключом.

2 голосов
/ 02 мая 2012
my %c = %a;
map {$c{$_} = $b{$_}} keys %b;
2 голосов
/ 18 ноября 2011

Это объединит хэши, а также примет во внимание неопределенные записи, поэтому они не заменят содержимое.

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...