Lihat perlfaq4: Bagaimana cara menggabungkan dua hash . Ada banyak informasi bagus yang sudah ada di dokumentasi Perl dan Anda dapat langsung mendapatkannya daripada menunggu orang lain menjawabnya. :)
Sebelum Anda memutuskan untuk menggabungkan dua hash, Anda harus memutuskan apa yang harus dilakukan jika kedua hash berisi kunci yang sama dan jika Anda ingin membiarkan hash asli apa adanya.
Jika Anda ingin mempertahankan hash asli, salin satu hash (% hash1) ke hash baru (% new_hash), lalu tambahkan kunci dari hash lain (% hash2 ke hash baru. Memeriksa apakah kunci sudah ada di% new_hash memberi Anda kesempatan untuk memutuskan apa yang harus dilakukan dengan duplikat:
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};
}
}
Jika Anda tidak ingin membuat hash baru, Anda masih bisa menggunakan teknik perulangan ini; cukup ubah% new_hash menjadi% 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};
}
}
Jika Anda tidak peduli bahwa satu hash menimpa kunci dan nilai dari yang lain, Anda bisa menggunakan potongan hash untuk menambahkan satu hash ke hash lainnya. Dalam kasus ini, nilai dari% hash2 menggantikan nilai dari% hash1 jika keduanya memiliki kunci yang sama:
@hash1{ keys %hash2 } = values %hash2;