मैं 2 डी सरणी के पहले तत्व को निकालने के लिए मानचित्र का उपयोग कर रहा हूं। यहां छोटा कोड स्निपेट है।इस मानचित्र व्यवहार को समझना
my $array = [ [1,11,111], [2,22], undef, [4] ];
my @firstList = map { (defined $_) && $_->[0] } @$array;
तो यहाँ मैं नक्शा उम्मीद कर रहा हूँ एक सरणी मूल्य या तो $ सरणी के तत्व की undef या पहले तत्व के साथ तत्व होने लौटने के लिए।
लेकिन आउटपुट वही नहीं है जो मैं उम्मीद कर रहा हूं। अपरिचित के लिए, मुझे 'स्केलर' प्रकार का तत्व मिल रहा है।
यदि मैं निम्नलिखित ब्लॉक के साथ मानचित्र विवरण बदलता हूं, तो मुझे अपेक्षित परिणाम मिल रहा है।
my @firstList = map { $_->[0] } @$array;
कृपया इन दो मानचित्र विवरणों के बारे में समझने में मेरी सहायता करें।
एक छोटा सुधार: 'परिभाषित अपरिफ' रिटर्न ''''। – Dallaylaen
मैं सोच रहा था कि क्यों अनिश्चित -> [0] काम करता है (यहां तक कि 'सख्त' के तहत भी)। यह [autovivified] (http://en.wikipedia.org/wiki/Autovivification) को चालू करता है, यानी मूल सरणी ** में स्पष्ट रूप से '[]' ** पर सेट किया गया है। – Dallaylaen
@ दलायलेन: यह पर्याप्त लोगों को भ्रमण करता है कि सीपीएएन के पास http://search.cpan.org/perldoc?autovivification पर एक "ऑटोविविफिकेशन" मॉड्यूल है जो आपको इसे 'नो ऑटोविविफिकेशन' आदेश से अक्षम करने की अनुमति देता है। –