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:
my %new_hash = %hash1; # make a copy; leave %hash1 alone
foreach my $key2 ( keys %hash2 )
{
if( exists $new_hash{$key2} )
{
warn "Key [$key2] is in both hashes!";
# handle the duplicate (perhaps only warning)
...
next;
}
else
{
$new_hash{$key2} = $hash2{$key2};
}
}
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.
foreach my $key2 ( keys %hash2 )
{
if( exists $hash1{$key2} )
{
warn "Key [$key2] is in both hashes!";
# handle the duplicate (perhaps only warning)
...
next;
}
else
{
$hash1{$key2} = $hash2{$key2};
}
}
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:
@hash1{ keys %hash2 } = values %hash2;