2011-08-04 14 views
8

संभव डुप्लिकेट:
How do I use boolean variables in Perl?क्या पर्ल में कोई अंतर्निहित सत्य/झूठा बूलियन मूल्य है?

[[email protected] ~]$ perl -e 'if(true){print 1}' 
1 
[[email protected] ~]$ perl -e 'if(false){print 1}' 
1 

मैं चकित दोनों true और falseif गुजरता हूँ ...

+0

"आदमी perlsyn" पर एक नज़र डालें या http://perldoc.perl.org/perlsyn.html –

उत्तर

5

हमेशा चेतावनी का उपयोग करें, विशेष रूप से एक पर -liners।

पर्ल के पास कोई सच्चा या झूठा नाम स्थिरांक नहीं है, और चेतावनियों या सख्त सक्षम किए बिना, एक "शब्दकोष" (कुछ जो स्थिर या कार्य हो सकता है लेकिन नहीं है) चुपचाप एक स्ट्रिंग के रूप में व्याख्या किया जाता है। तो आप if("true") और if("false") कर रहे हैं, और "" या "0" के अलावा सभी तार सही हैं।

10

आप सख्त साथ इसे चलाने के हैं:

Bareword "true" not allowed while "strict subs" in use at -e line 1. 

यह स्ट्रिंग "true" या "false" जो हमेशा सच है के रूप में व्याख्या की है:

perl -Mstrict -e 'if(true) { print 1 }' 

आप कारण मिलेगा। स्थिरांक पर्ल में परिभाषित कर रहे हैं नहीं है, लेकिन आप इसे स्वयं कर सकते हैं:

use constant { true => 1, false => 0 }; 
if(false) { print 1 } 
8

आप barewords true और false उपयोग कर रहे हैं। दुर्लभ शब्द एक बुरी चीज हैं। आप इस प्रयास करें:

Bareword "true" not allowed while "strict subs" in use at - line 3. 
Execution of - aborted due to compilation errors. 

किसी भी निर्धारित मान कि 0 की तरह नहीं दिखता "सही" माना जाता है:

use strict; 
use warnings; 
if (true){print 1} 

आप शायद कुछ इस तरह मिल जाएगा। कोई भी अपरिभाषित मान या कोई मान जो 0 जैसा दिखता है (जैसे 0 या "0") को "झूठा" माना जाता है। इन मानों के लिए कोई अंतर्निहित कीवर्ड नहीं है। तुम बस 0 और 1 उपयोग कर सकते हैं (या use constant { true => 1, false => 0}; में रहना है, तो यह वास्तव में आप परेशान। :)

+0

मैं 4GL पोर्टिंग हूँ पर्ल 5 के लिए कोड, और स्थिरांक रखने में मदद करता है। मैं उन लोगों के बारे में भूल गया था। धन्यवाद। – octopusgrabbus

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