2011-01-25 16 views
6

मैं अपने स्वयं पर्ल को पढ़ाने की प्रक्रिया में हूं। मैं एक्लिप्स में ईपीआईसी डीबगर का उपयोग कर रहा हूं। जब भी मेरे पास एक उप में केवल एक बार उपयोग किया जाता है, तो मुझे यह चेतावनी मिलती है:
टाइपोग्राफ़िकल त्रुटियां अक्सर अद्वितीय चर नाम के रूप में दिखाई देती हैं। यदि आपके पास एक अद्वितीय नाम रखने का कोई अच्छा कारण है, तो संदेश को दबाने के लिए इसे किसी भी तरह से का जिक्र करें। इस उद्देश्य के लिए C<our> घोषणा प्रदान की गई है।
C<our> क्या है? मानक खोज अनिश्चित थी।पर्ल: सी <our> क्या है?

+1

जब आप कहते हैं कि "मानक खोज अनिश्चित थी", तो क्या आपने [perldoc -f our] (http://perldoc.perl.org/functions/our.html) टाइप करने का प्रयास किया था? – Ether

+2

@ ईथर - प्रत्येक व्यक्ति को perldoc कमांड लाइन के बारे में पता नहीं है (या यहां तक ​​कि इसका उपयोग भी है)। ज्यादातर लोग सिर्फ Google। – DVK

+2

@Cooter => परिवर्तनीय घोषणा में 'हमारा' जोड़ते समय चेतावनी को दबाया जा सकता है, कारण यह है कि आप इसे प्राप्त कर रहे हैं क्योंकि चर आपके प्रोग्राम में केवल एक बार उपयोग किया जाता है। यह शायद एक त्रुटि है जब तक कि आप प्रतीकात्मक संदर्भ या प्रत्यक्ष प्रतीक तालिका पहुंच के साथ गेम नहीं खेल रहे हैं (जो आपको भाषा की मूल बातें सीखते समय वास्तव में नहीं करनी चाहिए)। क्या आप चेतावनी उत्पन्न करने वाले कोड के ब्लॉक को पोस्ट कर सकते हैं? –

उत्तर

11
  • जहाँ तक C<> बात यह है कि आप भ्रमित हो सकता है, ऐसा लगता है कि महाकाव्य की तरह एक पाठ in POD format लिया और बजाय पॉड से यह प्रतिपादन एक स्वरूपित पाठ में के कच्चे छपी।

    C<our> पीओडी सिंटैक्स में "हमारे पाठ को कोड के रूप में स्वरूपित करें" का अर्थ है, आमतौर पर मोनो-स्पेस फ़ॉन्ट का अर्थ है। यह StackOverflow's `our` backtick-surrounded format command आपके स्वयं के प्रश्न के समान है।

  • त्रुटि ही पर्ल के diagnostics मॉड्यूल, जो अन्यथा कुछ हद तक गुप्त पर्ल चेतावनियों के लिए विस्तारित स्पष्टीकरण प्रदान करता है (इस मामले में, "नाम"% s ::% s "केवल एक बार इस्तेमाल: संभव टाइपो") से आता है। वास्तव में, पीओडी स्वरूपण से निर्णय लेने से आपको भ्रमित कर दिया गया है, ईपीआईसी शायद source POD from which the above-linked "perldiag" document was generated का उपयोग करता है।

  • का आग्रह कर रहे हैं कि क्या our करता है, तो आप perldoc -f our पढ़ना चाहिए - यह (विवरण के लिए tchrist के asnwer देखें) एक वैश्विक चर किसी दिए गए क्षेत्र में प्रभावी में एक उपनाम बनाने के लिए एक तरीका है।

  • इस मामले में गुगलिंग तकनीक तक, जब आप विशेष रूप से खोज रहे हैं कि आप पर्ल कीवर्ड होने की अपेक्षा करते हैं, तो यह हमेशा "perldoc someKeyword" के लिए Google को भुगतान करता है।

+0

@ डेक्सिम - धन्यवाद! – DVK

+0

यह गलत है। 'हमारा' किसी भी तरह से मौजूदा पैकेज के हिस्से के रूप में एक चर घोषित नहीं करता है। यह एक व्याख्यात्मक घोषित करता है जो वर्तमान ** स्कोर ** का हिस्सा है, जो समान नामित पैकेज चर में उपनाम प्रदान करता है। लेकिन शब्दावली गुंजाइश का हिस्सा है, न कि पैकेज, और इस प्रकार आप पैकेज को बदलने के बावजूद इसके अलिया बाध्यकारी को बरकरार रखते हैं। 'पैकेज बाहरी; $ बाहरी :: Var = 10; हमारे $ वार; पैकेज आंतरिक; $ आंतरिक :: Var = 20; $ Var कहें; '10 मुद्रित होने के लिए बस ठीक काम करता है, 20 नहीं। इसका मतलब यह भी है कि आप' मेरी $ var = 10 की सामान्य शब्दावली छायांकन चाल नहीं कर सकते हैं; {मेरा $ var = $ var * 2; ...} '। देखें कि यह सब कैसे काम करता है? – tchrist

+1

@ क्रिसमस - मुझे आशा है कि आपका वर्तमान ** स्कोप ** और वर्तमान * स्कोर * नहीं है, अन्यथा मैं पूरी तरह उलझन में रहूंगा। अगर यह सिर्फ एक टाइपो था और कुछ गहरी पर्ची अवधि नहीं मैंने पहले कभी नहीं सुना, तो आप बिल्कुल सही हैं। मेरा एकमात्र बहाना यह है कि मैं कभी भी इस तरह के फैंसी तरीकों से "हमारा" उपयोग नहीं करता (क्योंकि मेरा अधिकांश पर्ल कोड काफी हद तक ओओ है जहां इस तरह का दृष्टिकोण खराब डिजाइन होगा)। – DVK

2

यह Perl::Critic संदेश है जो बताता है कि आप वर्णित कारण के लिए our $var; परिवर्तनीय परिभाषा के लिए उपयोग कर सकते हैं :-)।

+1

हालांकि कोई गारंटी नहीं है क्या आप वाकई पर्ल :: आलोचक से हैं और 'डायग्नोस्टिक्स' नहीं हैं? – DVK

+2

'हमारा' नहीं, एक चर वैरिएबल परिभाषित करता है। यह एक मौजूदा वैश्विक चर के लिए एक नया lexically scoped उपनाम प्रदान करता है। इसका मतलब है कि 'मेरा $ x = 10' और' हमारा $ Big_X = 100' बहुत कम अलग-अलग चीजें करता है: विचार करें कि किसी दूसरे में, शायद घोंसला वाले गुंजाइश के बाद हमारे पास 'मेरा $ x = 20' और' हमारा $ Big_X = 1_000 है '। यह एक नया नया निजी वैरिएबल है जिसका नाम '$ x' है, लेकिन वैश्विक' $ Big_X' पैकेज में इसका मूल्य बदल गया था। – tchrist

5

our वैश्विक चर के लिए एक व्याख्यात्मक रूप से स्कॉप्ड उपनाम है।

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