मैं निम्नलिखित (एक बग से आदर्शवादी) लघु पर्ल में स्क्रिप्ट है:मेरा हैश क्यों नहीं है?
my %metadata = undef;
if (defined %metadata)
{
print "defined";
}
किसी कारण कार्यक्रम के उत्पादन में हमेशा "परिभाषित" जाता है। तो हैश को "अपरिभाषित" होने के लिए किसी भी तरह से परिभाषित किया गया है। क्या इसे "अपरिभाषित" कहा जाता है?
संपादित करें:
यह आर्दश मामला है, समस्या को दोहराने के प्रयास में है। ,
my %metadata = my_sub_function();
if (defined %metadata)
{
print "defined";
}
my_sub_function के उत्पादन में कहाँ undef हो सकता है() या एक आबादी वाले हैश, और मैं केवल करने के लिए इन मामलों में से आखिरी में "परिभाषित" प्रिंट चाहते हैं: क्या मैं वास्तव में कर रहा हूँ और अधिक की तरह है।
संपादित करें 2:
संयोग से मैं undef के लिए पाया है कि
if (scalar(keys %metadata)
के लिए सही ढंग से कार्य(), लेकिन अभी भी नहीं।
करता है 'मैं करने के लिए undef' एक' वापसी कर my_sub_function' अंडाकार विफलता या कोई डेटा नहीं? यदि ऐसा है, तो शायद इसके बजाय इसे एक नंगे 'वापसी' करना चाहिए। इसे स्केलर संदर्भ में 'undef' और सूची संदर्भ में'() '(खाली सूची) के रूप में व्याख्या किया जाएगा। –