Qual é a melhor maneira de combinar os dois hashes em% hash1? Sempre soube que% hash2 e% hash1 sempre têm chaves exclusivas. Eu também preferiria uma única linha de código, se possível.
$hash1{'1'} = 'red';
$hash1{'2'} = 'blue';
$hash2{'3'} = 'green';
$hash2{'4'} = 'yellow';
perl
dictionary
hash
merge
Mleykamp
fonte
fonte
%hash1 = (%hash1, %hash2)
$hash_ref1
como$hash_ref2
, sem fusão. Se quiser$hash_ref1 = { %$hash_ref1, %$hash_ref2 };
, vou editar a resposta.Confira perlfaq4: Como faço para mesclar dois hashes . Já existem muitas informações boas na documentação do Perl e você pode obtê-las imediatamente ao invés de esperar que alguém responda. :)
Antes de decidir mesclar dois hashes, você deve decidir o que fazer se ambos os hashes contiverem chaves iguais e se quiser deixar os hashes originais como estavam.
Se você quiser preservar os hashes originais, copie um hash (% hash1) para um novo hash (% new_hash) e adicione as chaves do outro hash (% hash2 para o novo hash. Verificando se a chave já existe em% new_hash dá a você a chance de decidir o que fazer com as duplicatas:
Se não quiser criar um novo hash, você ainda pode usar esta técnica de loop; apenas mude o% new_hash para% hash1.
Se você não se importa que um hash substitua as chaves e valores do outro, você pode simplesmente usar uma fatia de hash para adicionar um hash a outro. Nesse caso, os valores de% hash2 substituem os valores de% hash1 quando têm chaves em comum:
fonte
Esta é uma pergunta antiga, mas aparece em alta na minha pesquisa no Google por 'hashes de mesclagem de perl' - e ainda não menciona o módulo CPAN muito útil Hash :: Merge
fonte
Para referências de hash. Você deve usar colchetes como o seguinte:
e não a resposta sugerida acima usando parênteses:
fonte