यदि आपके पास चेतावनियां सक्षम थीं, तो आपको पता चल जाएगा कि समस्या क्या थी।
भागो इस:
use strict;
use warnings;
my $val = chr(someFunction());
if($val == " ")
{
#do something
}
elsif($val == 0)
{
#do something else
}
sub someFunction {
return 1;
}
और आपको मिलता है: सी: लाइन 6 \ test.pl:> test.pl तर्क "" सेल्सियस पर संख्यात्मक eq (==) में संख्यात्मक नहीं है। तर्क "^ ए 'सेल्सियस पर संख्यात्मक eq (==) में संख्यात्मक नहीं है: \ test.pl लाइन 6.
उपयोग निदान डालने से हमें यह अतिरिक्त स्पष्टीकरण देता है:
(W numeric) The indicated string was fed as an argument to an operator
that expected a numeric value instead. If you're fortunate the message
will identify which operator was so unfortunate.
इसलिए, चूंकि हम संख्यात्मक ईक नहीं चाहते हैं, हम स्ट्रिंग eq: eq
चाहते हैं। यदि आप पहले से ही नहीं जानते थे, तो आप Equality Operators पढ़ने के लिए perldoc perlop
देख सकते हैं।
यह warnings
और strict
pragmas का उपयोग करने का तरीका क्लासिक उदाहरण है।
इसके अलावा, क्या आप वाकई यह जांचना चाहते हैं कि $ val वास्तव में एक स्पेस कैरेक्टर है या नहीं? यदि आप अपने "if" कथन की पहली शाखा को निष्पादित करने के लिए चाहते हैं, जब भी $ वैल में एक या अधिक रिक्त स्थान हों, तो इसके बजाय रेगेक्स का उपयोग करें। –