मानक अभ्यास use
अधिकतर समय, require
कभी-कभी, और do
का उपयोग करना है।
do 'file'
एक पर्ल स्क्रिप्ट के रूप में file
निष्पादित करेगा। यह फ़ाइल की सामग्री पर eval
पर कॉल करने जैसा है; यदि आप do
एक ही फ़ाइल को कई बार (उदा। एक लूप में) इसे हर बार पार्स और मूल्यांकन किया जाएगा जो आप चाहते हैं कि होने की संभावना नहीं है। do
और eval
के बीच का अंतर यह है कि do
संलग्न क्षेत्र में व्याख्यात्मक चर नहीं देख सकता है, जो इसे सुरक्षित बनाता है। do
सामान्य कार्यों के लिए कभी-कभी उपयोगी होता है जैसे पर्ल कोड के रूप में लिखी गई कॉन्फ़िगरेशन फ़ाइल को संसाधित करना।
require 'file'
do 'file'
जैसा है सिवाय इसके कि यह केवल एक विशेष फ़ाइल को एक बार पार्स करेगा और कुछ गलत होने पर अपवाद उठाएगा। (उदाहरण के लिए फ़ाइल नहीं मिल सकती है, इसमें एक वाक्यविन्यास त्रुटि है, आदि) स्वचालित त्रुटि जांच do 'file'
के लिए यह एक अच्छा प्रतिस्थापन बनाती है लेकिन यह अभी भी एक ही सरल उपयोग के लिए उपयुक्त है।
do 'file'
और require 'file'
रूपों को पिछले कुछ दिनों से कैरियोवर हैं जब * .pl फ़ाइल एक्सटेंशन का अर्थ "पर्ल लाइब्रेरी" था। पर्ल में कोड का पुन: उपयोग करने का आधुनिक तरीका इसे मॉड्यूल में व्यवस्थित करना है। "लाइब्रेरी" के बजाय कुछ "मॉड्यूल" को कॉल करना केवल अर्थशास्त्र है, लेकिन शब्दों का मतलब पर्ल संस्कृति में अलग-अलग चीजें हैं। एक पुस्तकालय सिर्फ subroutines का संग्रह है; एक मॉड्यूल एक नामस्थान प्रदान करता है, जिससे इसे पुन: उपयोग के लिए कहीं अधिक उपयुक्त बना दिया जाता है।
use Module
मॉड्यूल से कोड का उपयोग करने का सामान्य तरीका है। ध्यान दें कि Module
पैकेज नाम को एक शब्द के रूप में है और एक उद्धृत स्ट्रिंग नहीं है जिसमें फ़ाइल नाम है। पर्ल एक पैकेज नाम से आपके लिए एक फ़ाइल नाम में अनुवाद संभालती है। use
कथन संकलन समय पर होते हैं और विफल होने पर अपवाद फेंक देते हैं। इसका अर्थ यह है कि यदि आपका कोड उस मॉड्यूल पर निर्भर करता है जो उपलब्ध नहीं है या त्रुटि लोड करने में विफल रहता है तो तुरंत दिखाई देगा। इसके अतिरिक्त, use
स्वचालित रूप से मॉड्यूल के import()
विधि को कॉल करता है यदि उसके पास ऐसा कोई है जो आपको थोड़ा टाइपिंग सहेज सकता है।
require Module
use Module
जैसा है कि यह रनटाइम पर होता है और स्वचालित रूप से मॉड्यूल की import()
विधि को कॉल नहीं करता है। आम तौर पर आप use
का उपयोग जल्दी और अनुमानित रूप से विफल होने के लिए करना चाहते हैं, लेकिन कभी-कभी require
बेहतर होता है। उदाहरण के लिए, require
का उपयोग बड़े मॉड्यूल की लोडिंग में देरी के लिए किया जा सकता है, जिसे कभी-कभी कभी-कभी आवश्यक या मॉड्यूल वैकल्पिक बनाने के लिए किया जाता है। (यानी मॉड्यूल का उपयोग करें यदि यह उपलब्ध है लेकिन कुछ और पर वापस आना या कार्यक्षमता को कम करना है।)
कड़ाई से बोलते हुए, require Module
और require 'file'
के बीच एकमात्र अंतर यह है कि पहला फॉर्म पैकेज से स्वचालित अनुवाद को ट्रिगर करता है Foo::Bar
जैसे फ़ाइल नाम जैसे Foo/Bar.pm
पर नाम है जबकि बाद वाला फॉर्म फ़ाइल नाम से शुरू होने की अपेक्षा करता है। सम्मेलन के अनुसार, पहले फॉर्म का उपयोग मॉड्यूल लोड करने के लिए किया जाता है जबकि दूसरा फॉर्म लाइब्रेरी लोड करने के लिए उपयोग किया जाता है।
स्रोत
2010-02-02 03:52:26
क्या आपका मतलब 'मॉड्यूल की आवश्यकता है' या हो सकता है कि फ़ाइल की आवश्यकता है "फ़ाइल" की बजाय " –
@ माइकल, इसकी आवश्यकता को संसाधित करने के लिए 'फ़ाइल "की आवश्यकता है" वास्तव में' करें 'फ़ाइल' 'का उपयोग करता है, लेकिन यह केवल एक बार दी गई फ़ाइल पर ही काम करेगा। – daotoad
@daotoad: यही वह नहीं है जो मैं पूछ रहा था। * .pl फ़ाइलों के लिए आमतौर पर 'do' का उपयोग किया जाता है जबकि * .pm फ़ाइलों के लिए 'आवश्यकता' का उपयोग किया जाता है। फाइल एक्सटेंशन निश्चित रूप से कोई फर्क नहीं पड़ता, लेकिन सम्मेलन * .pl का मतलब लंबे समय तक "पर्ल लाइब्रेरी" नहीं है। मैं स्पष्ट करने की कोशिश कर रहा था कि क्या आप पुराने उपयोग का जिक्र कर रहे थे या यदि बाहरी कोड ('उपयोग', 'आवश्यकता', और' do') लोड करने के तीन तरीकों को प्रतिबिंबित करने के लिए प्रश्न संशोधित किया जाना चाहिए। चर्चा में सभी तीन रूपों को शामिल करने के लिए यह अधिक समझ (मेरे लिए) होगा। –