मैं पर्ल में हैश तालिका के सभी तत्वों को संसाधित करना चाहता हूं। मैं उसे कैसे कर सकता हूँ?पर्ल में, मैं एक संपूर्ण हैश को कैसे संसाधित करूं?
यह official perlfaq से एक प्रश्न है। हम importing the perlfaq to Stack Overflow हैं।
मैं पर्ल में हैश तालिका के सभी तत्वों को संसाधित करना चाहता हूं। मैं उसे कैसे कर सकता हूँ?पर्ल में, मैं एक संपूर्ण हैश को कैसे संसाधित करूं?
यह official perlfaq से एक प्रश्न है। हम importing the perlfaq to Stack Overflow हैं।
(यह official perlfaq answer है, शून्य से किसी भी अनुवर्ती संपादन)
वहाँ तरीके कि आप एक पूरे हैश संसाधित कर सकते हैं के एक जोड़े हैं। आप keys की एक सूची प्राप्त कर सकते हैं, फिर प्रत्येक कुंजी के माध्यम से जाएं, या एक समय में एक कुंजी-मूल्य जोड़ी लें।
सभी चाबियों के माध्यम से जाने के लिए, keys function का उपयोग करें। यह हैश की सभी चाबियाँ निकालता है और उन्हें एक सूची के रूप में आपको वापस देता है। तो आप विशेष कुंजी के माध्यम से मूल्य प्राप्त कर सकते हैं आप प्रोसेस कर रहे हैं:
foreach my $key (keys %hash) {
my $value = $hash{$key}
...
}
एक बार जब आप कुंजी की सूची है, तो आप इससे पहले कि आप हैश तत्वों की प्रक्रिया उस सूची पर कार्रवाई कर सकते हैं। उदाहरण के लिए, आप कुंजी सॉर्ट कर सकते हैं ताकि आप उन्हें शाब्दिक क्रम में कार्रवाई कर सकते हैं:
foreach my $key (sort keys %hash) {
my $value = $hash{$key}
...
}
या, आप केवल वस्तुओं में से कुछ कार्रवाई करने के लिए चाहते हो सकता है। आप केवल कुंजी है कि पाठ के साथ शुरू से निपटने के लिए चाहते हैं :, तुम सिर्फ ग्रेप का उपयोग करने वालों का चयन कर सकते हैं:
foreach my $key (grep /^text:/, keys %hash) {
my $value = $hash{$key}
...
}
तो हैश बहुत बड़ा है, आप नहीं कुंजियों की एक लंबी सूची बनाने के लिए चाहते हो सकता है।
while(my($key, $value) = each(%hash)) {
...
}
प्रत्येक ऑपरेटर जाहिरा तौर पर यादृच्छिक क्रम में जोड़े देता है, यदि ऐसा है तो: कुछ स्मृति को बचाने के लिए, आप एक समय में एक कुंजी-मान पेयर each() का उपयोग, जो एक जोड़ी आप अभी तक नहीं देखा है रिटर्न प्राप्त कर सकते हैं आपके लिए महत्वपूर्ण आदेश, आपको कुंजी विधि के साथ रहना होगा।
each() ऑपरेटर हालांकि थोड़ा मुश्किल हो सकता है। जब आप पर्ल आंतरिक रूप से सभी तत्वों को रीहाश करने के बाद कुछ जोड़ों को छोड़कर या फिर से प्रोसेस कर रहे हैं, तो आप हैश की चाबियाँ जोड़ या हटा नहीं सकते हैं। इसके अतिरिक्त, हैश में केवल एक इटरेटर है, इसलिए यदि आप उसी हैश पर keys, values, या each का उपयोग करते हैं, तो आप इटरेटर को रीसेट कर सकते हैं और अपनी प्रोसेसिंग को गड़बड़ कर सकते हैं। अधिक जानकारी के लिए में each entry देखें।