exists
फ़ंक्शन unexpectedly autovivify entries हैश में कर सकते हैं। मुझे लगता है यह एक बग हैमेरा निरंतर संशोधित क्यों 'मौजूद' है?
use strict;
use warnings;
use Data::Dump 'dump';
use constant data => {
'foo' => {
'bar' => 'baz',
},
'a' => {
'b' => 'c',
}
};
dump data; # Pre-modified
print "No data for 'soda->cola->pop'\n" unless exists data->{soda}{cola}{pop};
dump data; # data->{soda}{cola} now sprung to life
आउटपुट
{ a => { b => "c" }, foo => { bar => "baz" } } No data for 'soda->cola->pop' { a => { b => "c" }, foo => { bar => "baz" }, soda => { cola => {} } }
:
मुझे क्या आश्चर्य है कि इस व्यवहार के रूप में अच्छी तरह से स्थिरांक के लिए खत्म हो जाता है। क्या यह कुछ 5.10.1-विशिष्ट है, या पर्ल के अन्य संस्करण समान व्यवहार करते हैं?
"नो [ऑटोविविफिकेशन] (http://search.cpan.org/perldoc?autovivification)" का उपयोग करके आप किसी भी शब्दावली के लिए ऑटोविविफिकेशन बंद कर सकते हैं। – rafl
मेरा प्रश्न 'अस्तित्व' के साथ स्थिरांक के उत्परिवर्तनीय व्यवहार के बारे में अधिक था, इसके बजाय मैं इससे कैसे बच सकता था। – Zaid
स्थिरांक के साथ काम करते समय, याद रखें कि 'निरंतर पीआई => 3.14' का उपयोग 'उप पीआई() {3.14}' और' निरंतर डेटा => {...} '' '{my $ data = { ...}; उप डेटा() {$ डेटा}} ' –