नीचे कोड के एक ब्लॉक का सामान्यीकरण है जिसे मैं लिखना जारी रखता हूं जब मैं किसी प्रकार के लूप के अंदर सरणी के हैश बनाना चाहता हूं।सरणींड एरे के हैश में नए मान जोड़ने के लिए
#get value and key that I want to use
my $value = getvalue();
my $key = getKey();
#add value to hash using key
if($hash_of_arrays{$key}){
push(@{$hash_of_arrays{$key}}, $value);
}
else{
$hash_of_arrays{$key} = [$value];
}
अगर बयान बहुत तरह के एक सरल कार्य के लिए लिखने के लिए कठिन है, लेकिन यह किया जा सकता है क्योंकि जब उसके प्रमुख हैश में अपरिभाषित है एक मूल्य धक्का समस्याओं का कारण बनता की जरूरत है। मैं बस सोच रहा हूं कि यह लिखने के लिए कोई शॉर्टलैंड है - एक जहां मुझे $hash_of_arrays{$key}
लिखना नहीं है।
ठीक है, अब मुझे पूरा यकीन नहीं है कि आखिरी बार मैंने कोशिश की कि कैसे मैंने कोशिश की! मैंने सोचा कि यह "ARRAY संदर्भ नहीं" त्रुटि उत्पन्न करता है लेकिन यह अपरिभाषित चर के लिए ऐसा प्रतीत नहीं होता है। धन्यवाद! – MattLBeck
यह undefs के लिए नहीं होता है, लेकिन ऐसा होता है यदि आप इसे एक सरणी के रूप में इलाज करने का प्रयास करने से पहले '$ होआ {$ कुंजी}' में स्ट्रिंग की तरह कुछ डालते हैं :) – hobbs
इस विधि को ऑटोविविफिकेशन कहा जाता है। ब्रायन डी फोय का एक लेख है कि इसे कैसे बंद करें: http://www.effectiveperlprogramming.com/blog/1256 – shawnhcorey