2013-05-09 6 views
20

के बारे में शिकायत नहीं करता है, मैंने अभी अपने उबंटू पर पाया है कि पर्ल अंत में अर्धविराम के बारे में शिकायत नहीं कर रहा है। निम्नलिखित कोड देखें:पर्ल लापता अर्धविराम

#!/usr/bin/perl 
use warnings; 
use strict; 

my @array = (1, 2, 3, 4); 

foreach (@array) 
{ 
    print $_."\n" 
} 

print "no, this cant be true" 

कृपया ध्यान दें कि अर्धविराम ";" प्रिंट स्टेटमेंट से गायब है। अभी भी कोड ठीक चलाता है।

उत्पादन:

1 
2 
3 
4 
no, this cant be true 

अगर मैं प्रिंट के बाद अर्धविराम शब्दों में कहें, यह अभी भी काम करता है। तो यह मुझे भ्रमित कर रहा है।

क्या आप मुझे यह समझने में मदद कर सकते हैं कि मैं यहां क्या खो रहा हूं, या क्या कुछ स्पष्ट पर्ल विचारधारा है जिसे मैंने अनदेखा किया है?

+0

यह "अतिरिक्त" अर्ध-कॉलन के बारे में शिकायत नहीं करता है। "अतिरिक्त" और "गायब" अल्पविरामों के लिए भी जाता है। – ikegami

+2

अभिलेखागार से: [एक कार्यक्रम जो केवल अर्ध-कॉलन भूल जाता है] (http://stackoverflow.com/q/11695110/168657) – mob

+0

यह वास्तव में एक-पंक्ति eval ब्लॉक में बहुत आसान है। "Eval {$ some-> विधि} कहने पर विचार करें;" छंद कह रहे हैं "eval {$ some-> विधि;};"। –

उत्तर

45
perldoc perlsyn से

:

हर सरल बयान, अर्धविराम से समाप्त किया जाना चाहिए जब तक कि यह एक ब्लॉक, जिस स्थिति में अर्धविराम वैकल्पिक है में अंतिम बयान है।

आपका प्रिंट स्टेटमेंट ब्लॉक में अंतिम विवरण है।

सेमी-कोलन को छोड़कर अनुशंसित नहीं है। यदि आप बाद में ब्लॉक का विस्तार करते हैं तो इसे जोड़ना भूलना बहुत आसान है।

9
Perl documentation से

:

हर सरल बयान, अर्धविराम से समाप्त किया जाना चाहिए जब तक कि यह एक ब्लॉक में अंतिम बयान है, जो मामले में अर्धविराम वैकल्पिक है।

12

मैं अक्सर पर्ल में अर्धविरामों को टर्मिनेटर के बजाय विभाजक के रूप में सोचता हूं - जो इस व्यवहार को उपयोग करने में बहुत आसान बनाता है।

यह कहा गया है कि हमेशा अर्धविराम का उपयोग करने के लिए यह एक बुरा विचार नहीं है क्योंकि आपको इसे जोड़ने के लिए याद रखना नहीं है यदि आप ब्लॉक के अंत में अधिक बयान देते हैं, तो थोड़ा अतिरिक्त कॉमा का उपयोग करना एक सूची में ताकि आप बाद में इसे जोड़ना न भूलें (यदि इसके बाद कोई सूची आइटम नहीं है तो पर्ल अंतिम अल्पविराम को अनदेखा करता है)।

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