Apa cara terbaik untuk menggabungkan kedua hash menjadi% hash1? Saya selalu tahu bahwa% hash2 dan% hash1 selalu memiliki kunci unik. Saya juga lebih suka satu baris kode jika memungkinkan.
$hash1{'1'} = 'red';
$hash1{'2'} = 'blue';
$hash2{'3'} = 'green';
$hash2{'4'} = 'yellow';
perl
dictionary
hash
merge
mleykamp.dll
sumber
sumber
%hash1 = (%hash1, %hash2)
$hash_ref1
ke$hash_ref2
, tidak ada penggabungan. Anda mau$hash_ref1 = { %$hash_ref1, %$hash_ref2 };
, saya akan mengedit jawabannya.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:
Jika Anda tidak ingin membuat hash baru, Anda masih bisa menggunakan teknik perulangan ini; cukup ubah% new_hash menjadi% hash1.
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:
sumber
Ini adalah pertanyaan lama, tetapi keluar tinggi dalam pencarian Google saya untuk 'perl merge hashes' - namun tidak menyebutkan modul CPAN yang sangat membantu Hash :: Merge
sumber
Untuk referensi hash. Anda harus menggunakan kurung kurawal seperti berikut:
dan bukan jawaban yang disarankan di atas menggunakan tanda kurung:
sumber