¿Cuál es la mejor manera de combinar ambos hash en% hash1? Siempre supe que% hash2 y% hash1 siempre tienen claves únicas. También preferiría una sola línea de código si es posible.
$hash1{'1'} = 'red';
$hash1{'2'} = 'blue';
$hash2{'3'} = 'green';
$hash2{'4'} = 'yellow';
perl
dictionary
hash
merge
mleykamp
fuente
fuente
%hash1 = (%hash1, %hash2)
$hash_ref1
en$hash_ref2
, sin fusión. Si quieres$hash_ref1 = { %$hash_ref1, %$hash_ref2 };
, editaré la respuesta.Echa un vistazo a perlfaq4: ¿Cómo fusiono dos hashes ? Ya hay mucha información buena en la documentación de Perl y puede tenerla de inmediato en lugar de esperar a que otra persona la conteste. :)
Antes de decidir fusionar dos hashes, tienes que decidir qué hacer si ambos hashes contienen claves iguales y si quieres dejar los hashes originales como estaban.
Si desea conservar los hash originales, copie un hash (% hash1) en un nuevo hash (% new_hash), luego agregue las claves del otro hash (% hash2 al nuevo hash. Verificando que la clave ya existe en% new_hash te da la oportunidad de decidir qué hacer con los duplicados:
Si no desea crear un nuevo hash, aún puede utilizar esta técnica de bucle; simplemente cambie% new_hash a% hash1.
Si no le importa que un hash sobrescriba las claves y los valores del otro, puede usar un trozo de hash para agregar un hash a otro. En este caso, los valores de% hash2 reemplazan los valores de% hash1 cuando tienen claves en común:
fuente
Esta es una pregunta antigua, pero aparece en un lugar destacado en mi búsqueda de Google de 'perl merge hashes' y, sin embargo, no menciona el muy útil módulo CPAN Hash :: Merge
fuente
Para referencias hash. Debes usar llaves como las siguientes:
y no la respuesta sugerida arriba usando paréntesis:
fuente