Quelle est la meilleure façon de combiner les deux hachages en% hash1? Je sais toujours que% hash2 et% hash1 ont toujours des clés uniques. Je préférerais également une seule ligne de code si possible.
$hash1{'1'} = 'red';
$hash1{'2'} = 'blue';
$hash2{'3'} = 'green';
$hash2{'4'} = 'yellow';
perl
dictionary
hash
merge
mleykamp
la source
la source
%hash1 = (%hash1, %hash2)
$hash_ref1
à$hash_ref2
, sans fusion. Vous voulez$hash_ref1 = { %$hash_ref1, %$hash_ref2 };
, je modifierai la réponse.Découvrez perlfaq4: Comment fusionner deux hachages . Il y a déjà beaucoup de bonnes informations dans la documentation Perl et vous pouvez les avoir tout de suite plutôt que d'attendre que quelqu'un d'autre y réponde. :)
Avant de décider de fusionner deux hachages, vous devez décider quoi faire si les deux hachages contiennent des clés identiques et si vous souhaitez laisser les hachages d'origine tels qu'ils étaient.
Si vous souhaitez conserver les hachages d'origine, copiez un hachage (% hash1) dans un nouveau hachage (% new_hash), puis ajoutez les clés de l'autre hachage (% hash2 au nouveau hachage. Vérification que la clé existe déjà dans% new_hash vous donne une chance de décider quoi faire avec les doublons:
Si vous ne souhaitez pas créer de nouveau hachage, vous pouvez toujours utiliser cette technique de bouclage; changez simplement le% new_hash en% hash1.
Si vous ne vous souciez pas qu'un hachage écrase les clés et les valeurs de l'autre, vous pouvez simplement utiliser une tranche de hachage pour ajouter un hachage à un autre. Dans ce cas, les valeurs de% hash2 remplacent les valeurs de% hash1 lorsqu'elles ont des clés en commun:
la source
C'est une vieille question, mais qui ressort en haut de ma recherche Google pour 'perl merge hashes' - et pourtant elle ne mentionne pas le très utile module CPAN Hash :: Merge
la source
Pour les références de hachage. Vous devez utiliser des accolades comme celles-ci:
et non la réponse suggérée ci-dessus en utilisant des parenthèses:
la source