कैसे की जाँच करने के लिए पर्ल में एक चर शामिल हैं undef

कार्य । कोड में पर्ल प्रोग्रामिंग भाषा चर है. आप की जरूरत है कि जाँच करने के लिए इस चर का मान undef या नहीं.

निर्णय

एक चर शामिल हैं undef केवल यदि इस समारोह defined चर के लिए गलत देता है । यहाँ कोड है कि प्रदर्शित करता है पाठ अगर एक चर शामिल हैं undef:

▶ Run
#!/usr/bin/perl

my $foo;

if ( !defined($foo) ) {
    print "foo is undef";
}

गलत निर्णय

क्या जांच करने के लिए undef में एक चर आप की जरूरत है का उपयोग करने के लिए defined. लेकिन यह अक्सर होता है क्या जांच करने के लिए undef के उपयोग के अन्य, गलत तरीके.

यहाँ का पहला उदाहरण है कि कैसे यह करने के लिए नहीं:

▶ Run
#!/usr/bin/perl

my $foo;

if ( !$foo ) { # error!
    print "foo is undef";
}

इस उदाहरण वास्तव में सिर्फ स्ट्रिंग foo is undef यदि चर $foo में शामिल है का मूल्य undef, लेकिन कोड प्रिंट इस लाइन में अन्य मामलों में. उदाहरण के लिए, यदि $foo संख्या में शामिल 0 या खाली स्ट्रिंग ''. इस कोड नहीं है कि जाँच करने के लिए $foo में शामिल undef, और जाँच करें कि $foo में शामिल है का मूल्य गलत है, और यह है बिल्कुल के रूप में ही नहीं undef.

यहाँ का एक और उदाहरण है गलत सत्यापन undef:

▶ Run
#!/usr/bin/perl

my $foo;

if ( $foo == undef ) { # error!
    print "foo is undef";
}

वहाँ रहे हैं बस के सभी पूरी तरह से गलत है । यदि चर $foo के एक मूल्य होता है undef, इस कोड प्रिंट जगह foo is undef, लेकिन कोड प्रिंट इस लाइन में अन्य मामलों में. उदाहरण के लिए, अगर एक चर में $fooशामिल हैं स्ट्रिंग 'Hello'.

ऑपरेटर == का इरादा है के लिए संख्या की तुलना करें. इससे पहले कि आप इस की तुलना ऑपरेटर धर्मान्तरित अपने तर्कों के लिए संख्या. चर $foo है जो undef हो जाता है की संख्या 0. और undef के अधिकार ऑपरेटर भी हो जाता है की संख्या 0. शून्य शून्य है, हालत शुरू हो रहा है. लेकिन शून्य हो सकता है और कुछ लाइनों के साथ, उदाहरण के लिए 'Hello'.

यदि आप इस कोड को जोड़ने use strict; और use warnings;है, तो पर्ल उत्पादन होगा foo is undefहै, लेकिन बस चलो तुम्हें पता है के बारे में क्या हो रहा है कुछ अजीब:

Use of uninitialized value in numeric eq (==) at script.pl line 8.
Use of uninitialized value $foo in numeric eq (==) at script.pl line 8.
foo is undef

सामान्य में, यह है हमेशा के लिए एक बहुत अच्छा अभ्यास करने के लिए हमेशा उपयोग use strict; और use warnings;.

संबंधित विषयों

अन्य लेख