2012-09-24 10 views
7

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

हालांकि, मैं अभी भी उत्सुक था अगर लोग इसे किसी अन्य कारण से शामिल कर सकते हैं, मुझे अभी तक पता नहीं है। या यदि संभवत: इसमें शामिल होने के लिए कुछ (उदा।) ~ 'ऐतिहासिक' कारण हो सकता है। या क्या मेरे घर के विस्फोट के डर के लिए शेबांग लाइन कभी भी .pm फाइलों (अवधि) में शामिल नहीं होनी चाहिए?

+0

एकमात्र उपयोग मैं सोच सकता हूं कि कोई व्यक्ति है लेकिन मॉड्यूल में कुछ परीक्षण जो स्क्रिप्ट के रूप में मॉड्यूल को निष्पादित करके चलाए जाते हैं। – ikegami

उत्तर

7

नहीं। एक शेबांग निष्पादन योग्य के रूप में एक फ़ाइल को चिह्नित करता है, और एक मॉड्यूल आमतौर पर निष्पादन योग्य नहीं होता है।

सामान्यतः, अपवाद हैं। पाइथन का पता लगाने के लिए एक मुहावरे है कि वर्तमान फ़ाइल दुभाषिया द्वारा बुलाया गया है या नहीं, और कुछ मॉड्यूल स्टैंडअलोन को आमंत्रित करते समय अपने यूनिट परीक्षण चलाने के लिए इसका उपयोग करते हैं। यह पर्ल समुदाय में आम नहीं है, जहां आपके पास सीपीएएन पर मॉड्यूल के साथ बंडल की गई अतिरिक्त इकाई परीक्षण फ़ाइलें हैं।

तो इस दिमाग में इस संभावित अपवाद के साथ भी, मैं एक मॉड्यूल फ़ाइल में शेबैंग को शामिल करने के लिए अच्छी शैली नहीं मानूंगा जिसका अर्थ सीधे निष्पादित नहीं किया जाना है।

+1

अपवाद हैं। उदाहरण के लिए [ऐप :: मॉड्यूल :: लिस्टर] (https://metacpan.org/module/App:: मॉड्यूल :: लिस्टर)। –

4

संक्षिप्त उत्तर नहीं है, लेकिन कोई सही या गलत जवाब नहीं है।

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

अधिकतर मामलों में, ज्यादातर मामलों में इसे मॉड्यूल में जोड़ने का कोई कारण नहीं है, जब तक कि कोई कारण न हो कि आप सीधे उस मॉड्यूल को निष्पादित करना चाहते हैं। एक पर्ल मॉड्यूल वास्तव में शीर्ष पर एक 'पैकेज' कमांड के साथ, वास्तव में सिर्फ एक पर्ल स्क्रिप्ट है।

किसी भी तरह से, अगर यह वहां होता है तो इससे कोई दिक्कत नहीं होगी, लेकिन ज्यादातर मामलों में यह समझ में नहीं आता है।

** भले ही पर्ल कैसे शुरू किया जाए, यह हमेशा कमांड लाइन स्विच के लिए शेबैंग को देखेगा। यह विंडोज के लिए भी जाता है, जहां ओएस शेबैंग लाइन की तलाश नहीं करता है, लेकिन जब पर्ल फ़ाइल को स्कैन करता है तो यह होगा। http://perldoc.perl.org/perlrun.html देखें।

+0

क्या कोई समस्या है यदि किसी मॉड्यूल में शेबैंग लाइन है जो गलत स्थान पर इंगित करती है, उदा। पर्ल दुभाषिया का अस्तित्वहीन या गलत संस्करण? यदि ऐसा है, तो ऐसा करने का एक और कारण नहीं होगा। –

+0

यदि आप इसे निष्पादित करने का प्रयास करते हैं तो एक अमान्य शेबैंग लाइन का परिणाम 'दुभाषिया नहीं मिला' त्रुटि होगी। – tripleee

+0

@ स्टुअर्ट आर जेफ़रीज़, कोई समस्या नहीं। यदि आप मॉड्यूल निष्पादित करने का प्रयास नहीं करते हैं, तो शबांग को अनदेखा कर दिया जाएगा। – ikegami

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