2010-03-10 13 views
6

मैं ऐसा करते हैं तो:जब मेरा तर्क 0 मान के रूप में होता है तो मेरा पर्ल प्रोग्राम सहायता संदेश क्यों प्रिंट करता है?

GetOptions(
    'u=s' => \$in_username, 
    'r=i' => \$in_readonly, 
    'b=i' => \$in_backup 
    ); 

exit usage() unless $in_username && $in_readonly && $in_backup; 

और इस तरह का प्रोग्राम कहते हैं:

./app.pl -u david -r 12 -b 0 

यह हमेशा उपयोग बुला() में परिणाम है, तो जाहिर है 0 मान एक पूर्णांक के रूप में नहीं देखा जाता है। मैं पूर्णांक मान और 0 स्वीकार कर सकता हूं?

+4

आपका कथन "0 को पूर्णांक मान के रूप में नहीं देखा गया है" सही है लेकिन "0" को गलत के रूप में व्याख्या किया जा रहा है: "ए बुलियन मान को बूलियन अर्थ में सत्य के रूप में व्याख्या किया जाता है यदि यह शून्य स्ट्रिंग या संख्या 0 (या इसकी स्ट्रिंग समकक्ष, "0") नहीं है। बूलियन संदर्भ केवल एक विशेष प्रकार का स्केलर संदर्भ है जहां स्ट्रिंग या संख्या में कोई रूपांतरण कभी नहीं किया जाता है। "डंक्रंब का जवाब सही है हालांकि आपके गलत तरीके के बारे में स्पष्ट नहीं है। Http://perldoc.perl.org/perldata.html – msw

उत्तर

11

जब एक बूलियन के रूप में इलाज, 0 पर्ल

करके गलत मूल्य माना जाता है

आप की तरह

exit usage() unless defined($in_username) && defined($in_readonly) && defined(in_backup); 

संपादित कुछ चाहिए

भी करने के लिए एमएसडब्ल्यू उत्तम टिप्पणी कृपया देखें मूल प्रश्न

+0

आकर्षण के रूप में काम करता है, बहुत बहुत धन्यवाद! – David

संबंधित मुद्दे

 संबंधित मुद्दे