2013-03-14 15 views
8

मैं पर्ल वितरण में base.pm के स्रोत को देख रहा हूं, और मुझे नहीं लगता कि यह "गैर-व्यावहारिक" मॉड्यूल से क्या अंतर करता है। यदि use base एक "प्राग्मा" है, तो यह मूल रूप से use Foo से किसी भी तरह से भिन्न है जहां Foo कोई मॉड्यूल है?मॉड्यूल को एक व्यावहारिक मॉड्यूल बनाता है?

उत्तर

7

प्रज्ञा के लिए कोई ठोस परिभाषा नहीं है। कुछ आधिकारिक के निकटतम perlpragma में है।

  • वे आमतौर पर पार्सर की भाषा या व्यवहार को संशोधित करते हैं।
  • उनका प्रभाव आम तौर पर स्पष्ट रूप से स्कॉप्ड होता है।

मैं व्यक्तिगत रूप से उन का मानना ​​है आवश्यकताएँ हैं (और यह कि perlpragma भी करता है लगता है), लेकिन कोर मॉड्यूल vars और subs pragmas होने के लिए भले ही उनके प्रभाव lexically scoped नहीं है प्रलेखित रहे हैं।

base और lib किसी भी मानदंड से मेल नहीं खाते हैं। वे क्या करते हैं "पर्ल खुद" को जानकारी प्रदान करते हैं। मुझे लगता है कि एक प्रज्ञा के रूप में भी योग्यता प्राप्त करता है।

मैं व्यावहारिक होने के लिए अपने मॉड्यूल use syntax qw(loop); पर विचार करता हूं। (लापरवाही प्लग!)

+0

वास्तव में base.pm को कवर करने के लिए भूल गए। इस चूक को संबोधित किया। – ikegami

+0

मेरी टिप्पणी अपने आप का जवाब बन गया :-) –

1

हालांकि नाम अक्सर कई संदर्भों में उपयोग किया जाता है, लेकिन आमतौर पर मुझे लगता है कि perldoc perlpragma में दस्तावेज़ के रूप में संकेत हैश %^H संकेतों का उपयोग करता है। इसका मतलब है कि मुख्य अंतर यह है कि कार्रवाई संकलन समय पर होनी चाहिए; use काम करता है जबकि require (BEGIN में नहीं) नहीं करता है। यह "व्यावहारिक मॉड्यूल" (इस परिभाषा के अनुसार) और अन्य मॉड्यूल के बीच एक महत्वपूर्ण अंतर है। इस परिभाषा से vars, subs, base या lib प्रागमा में से कोई भी नहीं है।

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