क्या सच है और झूठी पर्ल में

में पर्ल प्रोग्रामिंग भाषा कोई विशेष मूल्यों का मतलब है कि सही और गलत.

किसी भी मूल्य है कि पर्ल की व्याख्या कर सकते हैं के रूप में एक बूलियन मान. उदाहरण के लिए, स्ट्रिंग 'Hello' सच है । निम्न कोड प्रदर्शित करता है स्ट्रिंग 'true':

▶ Run
#!/usr/bin/perl

if ('Hello') {
    print 'true';
} else {
    print 'false';
}

क्या मूल्यों गलत कर रहे हैं

में पर्ल प्रोग्रामिंग भाषा, वहाँ रहे हैं 5 मूल्यों है कि गलत कर रहे हैं. इस:

  • undef
  • 0 — 0
  • 0.0 — की संख्या 0.0
  • '' — खाली स्ट्रिंग
  • '0' — पंक्ति 0

यहाँ एक उदाहरण है कि पता चलता है कि इन सभी मूल्यों द्वारा व्याख्या कर रहे हैं पर्ल के रूप में एक झूठ है. कोड को प्रदर्शित करेगा 5 बार शब्द 'false':

▶ Run
#!/usr/bin/perl

foreach my $val (undef, 0, 0.0, '', '0') {
    if ($val) {
        print "true\n";
    } else {
        print "false\n";
    }
}

क्या मूल्यों को सच कर रहे हैं

सच कर रहे हैं सभी मूल्यों को छोड़कर, उन 5 कर रहे हैं कि गलत है.

नियम

आदेश में याद करने के लिए क्या गलत है, आप का उपयोग कर सकते हैं नियम: "सभी कि 0 झूठी है अन्य की तुलना में '0 लेकिन सच' पंक्ति".

इन सभी 5 मूल्यों गलत कर रहे हैं अगर वे कर रहे हैं के रूप में इस्तेमाल किया संख्या बन 0. यहाँ कोड है कि यह पुष्टि करता है, कोड प्रदर्शित करता है 5 शून्य:

▶ Run
#!/usr/bin/perl

foreach my $val (undef, 0, 0.0, '', '0') {
    print $val + 0, "\n";
}

हालांकि, अगर आप का उपयोग use strict; और use warnings; (जो लगभग हमेशा के लायक कर रही है), मामले में undef और खाली स्ट्रिंग पर्ल जाएगा दिखाने के लिए चेतावनी.

यहाँ कोड है और अपने काम के परिणाम के मामले में undef:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var = undef;

print $var + 0;
Use of uninitialized value $var in addition (+) at script.pl line 8.
0

और यहाँ कोड और परिणाम के मामले में खाली स्ट्रिंग:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var = '';

print $var + 0;
Argument "" isn't numeric in addition (+) at script.pl line 8.
0

0 but true

पर्ल में कर रहे हैं इस तरह के मूल्यों में एक बूलियन संदर्भ सच कर रहे हैं, लेकिन में इस्तेमाल किया जब के रूप में संख्या में परिवर्तित संख्या शून्य है । ऐसे सभी मूल्यों को तार कर रहे हैं.

उदाहरण के लिए, स्ट्रिंग '0ASDF' का एक उदाहरण है, इस तरह के मूल्य. जब प्रयोग किया जाता के रूप में एक बूलियन मान इस स्ट्रिंग के रूप में व्याख्या की जाएगी सच है । वास्तव में, वहाँ रहे हैं केवल 2 लाइनों, जो कर रहे हैं झूठ — एक खाली स्ट्रिंग, और एक स्ट्रिंग में शामिल है, जो केवल एक ही चरित्र है की संख्या, शून्य लाइन '0ASDF' नहीं है न तो इन दो लाइनों, तो यह नहीं है एक झूठ और सच.

यहाँ कोड है कि क्या पता चलता है लाइन '0ASDF' सच है (कोड प्रदर्शित करेगा स्ट्रिंग 'true'):

▶ Run
#!/usr/bin/perl

if ('0ASDF') {
    print 'true';
} else {
    print 'false';
}

यदि इस लाइन '0ASDF' का उपयोग करने के लिए एक संख्या के रूप में, यह व्याख्या की है के रूप में नंबर 0 (हालांकि, जब शामिल use strict;, use warnings; एक चेतावनी हो जाएगा):

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var = '0ASDF';

print $var + 0;
Argument "0ASDF" isn't numeric in addition (+) at script.pl line 8.
0

सबसे प्रसिद्ध का उपयोग 0 but true मूल्यों में होता है पर्ल DBI पुस्तकालय का उपयोग करता है, स्ट्रिंग '0E0'.

सरणी, हैश, संदर्भ

सरणी है सच है, अगर वहाँ कम से कम एक मूल्य है । यदि सरणी में कोई मूल्य नहीं है, तो सरणी गलत है ।

इसी तरह, अगर हैश कम से कम एक जोड़ी के मूल्यों है, तो हैश सच है । अगर हैश नहीं है कोई जोड़ी के मूल्यों, यह एक झूठ है ।

संदर्भ हमेशा सच है, कोई फर्क नहीं पड़ता कि यह क्या करने के लिए संदर्भित करता है. यहां तक कि एक संदर्भ के लिए एक खाली सरणी [] या एक खाली हैश {} सत्य है ।

एक और एक खाली स्ट्रिंग

अक्सर लिखने के लिए कोड में सच्चाई यह है कि एक नंबर से एक है, और लिखने के लिए झूठ का इस्तेमाल किया संख्या शून्य है ।

दिलचस्प है, उनका मानना है कि विहित पर्ल मूल्य को निरूपित करने के लिए झूठ नहीं है संख्या 0, और खाली स्ट्रिंग ''.

यहाँ एक उदाहरण है कि पता चलता है । हम ले लिया लाइन 'Hello', जो सच है, और के साथ के एकल ऑपरेटर ! में बदल गया एक झूठ:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

print Dumper !'Hello';

परिणाम स्क्रीन पर दिखाई दिया पाठ $VAR1 = '';

यदि आप का उपयोग ऑपरेटर ! में दो बार, हम प्राप्त विहित मूल्य के लिए सच्चाई से देखने के बिंदु के पर्ल:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

print Dumper !!'Hello';

(स्क्रीन पर दिखाई देता है पाठ $VAR1 = 1;).

समस्या की पठनीयता

अक्सर लिखने के लिए कोड में सच्चाई यह है कि एक नंबर से एक है, और लिखने के लिए झूठ का इस्तेमाल किया संख्या शून्य है । लेकिन, दुर्भाग्य से, इन नंबरों से यह स्पष्ट नहीं है क्या इसका मतलब यह है — संख्या (और वहाँ अन्य किया जा सकता है संख्या), या एक झंडा अर्थ सच है ।

यहाँ एक उदाहरण है । यहाँ 1 के लिए workers का मतलब है कि आप की जरूरत का उपयोग करने के लिए एक एकल कार्यकर्ता (द्वारा प्रतिस्थापित किया जा सकता 10). और इकाई है log का मतलब है कि लॉगिंग को सक्षम किया गया है (और प्रतिस्थापित किया जा सकता है केवल करने के लिए 0 को निष्क्रिय करने के लिए):

my $config = {
    workers => 1,
    log => 1,
};

अन्य लेख