2013-05-17 6 views
8

ऐसा लगता है कि पर्ल का इलाज {+0,0} ब्लॉक के रूप में होता है और {0,0} एक EXPR क्यों? क्या यह एक विशेष प्रावधान है?perl (v5.14.2) में, मानचित्र {+0,0}() सही क्यों है लेकिन मानचित्र {0,0}() नहीं है?

यदि मैं यह सुनिश्चित करना चाहता हूं कि {} एक अज्ञात हैश जो ब्रेसिज़ में है, क्या मुझे {} से पहले '+' रखना होगा?

धन्यवाद।

+2

'{; ...} एक ब्लॉक के रूप में पार्सिंग को मजबूर करने के लिए अधिक मूर्खतापूर्ण (और पाठक के लिए एक बेहतर संकेत) है। '+' आमतौर पर विपरीत ('+ {...}' के लिए पार्सिंग को एक एक्सपीआर के रूप में मजबूर करने के लिए प्रयोग किया जाता है)। – ikegami

उत्तर

3

क्यों? क्योंकि यह या तो हो सकता है, और पार्सर निश्चित रूप से यह सुनिश्चित करने के लिए काफी दूर नहीं दिखता है कि इसे तय करने के लिए कितना समय चाहिए।

क्या आपको {} से पहले {} को एक अज्ञात हैश कन्स्ट्रक्टर के रूप में माना जाना चाहिए, चाहे वह {} की सामग्री के बावजूद हो? हाँ।

+3

यह दिलचस्प है कि 'perl -MO = Deparse -e" मानचित्र {+0,0} 1..2 "' कुछ ऐसा आउटपुट करता है जिसे आप मूल स्क्रिप्ट में उपयोग नहीं कर सकते। –

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