use My::Module
और require My::Module
करने के बीच क्या अंतर है?पर्ल में, मॉड्यूल लोड करने के लिए उपयोग और आवश्यकता के बीच क्या अंतर है?
उत्तर
use
समारोह:
use ModuleName;
निम्नलिखित कोड require
समारोह का उपयोग कर के बराबर है:
BEGIN {
require ModuleName;
ModuleName->import;
}
BEGIN
ब्लॉक के रूप में जल्द ही पार्सर इसे देखता है के रूप में चलाने के लिए इस कोड का कारण बनता है। require
मॉड्यूल या die
की कोशिश कर रहा है। और फिर मॉड्यूल के import
फ़ंक्शन को कॉल किया जाता है। import
फ़ंक्शन सभी प्रकार की चीजें कर सकता है, लेकिन नामस्थान में फ़ंक्शंस लोड करना आम है कि use
डी (अक्सर Exporter
मॉड्यूल के साथ)।
ऐसा नहीं है कि आयात नोट करना महत्वपूर्ण है कि इस मामले में कहा जाता है नहीं किया जाएगा:
use ModuleName();
उस मामले में, यह
BEGIN {
require ModuleName;
}
मैनपेज कहता है कि यह * बिल्कुल * बराबर है :) – Inshallah
@ इंशाल्ला मैं अपनी दोषपूर्ण स्मृति के लिए थोड़ा विग्लू कमरा छोड़ना चाहता हूं। –
perldoc -q
"difference between require and use" से:
use Module
, जैसेrequire Module
है, सिवाय इसके किuse
4.1: संकलन समय पर मॉड्यूल लोड करता है, रन-टाइम नहीं।
4.2: उस पैकेज से वर्तमान में आयात प्रतीक और अर्थशास्त्र आयात करता है।
use
रन टाइम पर require
रन संकलन समय पर रन, और।
'आयात' की कॉलिंग को न भूलें। –
यह वह जवाब है जिसे वे पर्ल परीक्षण और नौकरी साक्षात्कार के लिए देख रहे हैं। आपको इसे याद रखना होगा! – Hawk
पर्ल महान प्रलेखन के साथ आता है के बराबर है। प्रत्येक कुछ महीनों में कम से कम एक बार पूरे दस्तावेज को पढ़ने से लाभ होगा।
अन्यथा
require
की मांग है कि एक पुस्तकालय फ़ाइल हो शामिल अगर यह नहीं किया गया है पहले से ही शामिल किया गया। फ़ाइल को डू-फाइल तंत्र के माध्यम से शामिल किया गया है, जो अनिवार्य रूप से केवल विभिन्न प्रकार के eval चेतावनी के साथ है कि आवेषण स्क्रिप्ट में लेक्सिकल चर शामिल कोड के लिए अदृश्य होगा।
... आदि: निम्नलिखित सबरूटीन के समान अर्थ विज्ञान हैइसी तरह,
C:\>
perldoc -f use
कुछ अर्थ विज्ञान वर्तमान पैकेज में नामित मॉड्यूल से, आम तौर पर अपनी पैकेज में निश्चित सबरूटीन या चर नाम अलियासिंग से आयात करता है। यह
BEGIN { require Module; Module->import(LIST); }
के बराबर है, सिवाय इसके कि मॉड्यूल एक शब्दकोष होना चाहिए।
... आदि
वहाँ भी है perlfaq entry हालांकि मुझे लगता है कि इसके बाद के संस्करण की तुलना में कम जानकारीपूर्ण है।
अद्भुत 'perldoc' कमांड के अतिरिक्त, आप http://perldoc.perl.org –
Ah के माध्यम से सभी दस्तावेज़ों तक पहुंच सकते हैं। आपके केबीडी टैग यह बताने में कठोर बनाते हैं कि एक लिंक क्या है (साथ ही साथ बहुत सुंदरता प्रदान नहीं करना)। – ysth
@ अन्य: लेकिन यह एम है। उनमें से एक, वैसे भी। – ysth
अपने आप को समझना आसान हो सकता है, लेकिन यह निश्चित रूप से एक बहुत अच्छा पर्ल सवाल है कि शुरुआती पूछने के लिए प्रवण हैं। मुझे नहीं लगता कि यह स्टैक ओवरफ्लो पर क्यों नहीं होना चाहिए। नुकसान कहां है? – innaM