जवाबों:
% हैश १ = (% हैश १,% हैश २) ## वरना ... @ hash1 {चाबियाँ% hash2} = मान% hash2; ## या संदर्भ के साथ ... $ hash_ref1 = {% $ hash_ref1,% $ hash_ref2};
undef
, शून्य, खाली स्ट्रिंग false
,, मिथ्या ...)1 * (उर्फ सहयोगी-सरणी , उर्फ शब्दकोश )
%hash1 = (%hash1, %hash2)
$hash_ref1
करने के लिए $hash_ref2
, मिलाने की। आप चाहते हैं $hash_ref1 = { %$hash_ref1, %$hash_ref2 };
, मैं उत्तर संपादित करूँगा।
Perlfaq4 की जाँच करें: मैं दो हैश का विलय कैसे करूँ । पर्ल दस्तावेज़ में पहले से ही बहुत सारी अच्छी जानकारी है और आप इसका जवाब देने के लिए किसी और की प्रतीक्षा करने के बजाय इसे तुरंत दूर कर सकते हैं। :)
इससे पहले कि आप दो हैश का विलय करने का फैसला करें, आपको यह तय करना होगा कि दोनों हैश में क्या कुंजी हैं जो समान हैं और यदि आप मूल हैश को छोड़ना चाहते हैं तो वे क्या हैं।
यदि आप मूल हैश को संरक्षित करना चाहते हैं, तो एक हैश (% हैश 1) को एक नए हैश (% new_hash) पर कॉपी करें, फिर अन्य हैश से कुंजी जोड़ें (% हैश 2 से नए हैश की जाँच करें। जाँच कर रहे हैं कि कुंजी पहले से ही% new_hash में मौजूद है। आपको डुप्लिकेट के साथ क्या करने का फैसला करने का मौका देता है:
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};
}
}
यदि आप नया हैश नहीं बनाना चाहते हैं, तब भी आप इस लूपिंग तकनीक का उपयोग कर सकते हैं; बस% new_hash को% हैश 1 में बदलें।
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};
}
}
अगर आपको परवाह नहीं है कि एक हैश दूसरे से कुंजियों और मूल्यों को अधिलेखित करता है, तो आप एक हैश स्लाइस का उपयोग दूसरे में एक हैश जोड़ने के लिए कर सकते हैं। इस मामले में,% हैश 2 के मान% हैश 1 से मानों को प्रतिस्थापित करते हैं जब उनके पास सामान्य रूप से चाबियाँ होती हैं:
@hash1{ keys %hash2 } = values %hash2;