.pm(पर्ल मॉड्यूल) और .pl(पर्ल स्क्रिप्ट) फ़ाइल के बीच अंतर क्या है ?
कृपया हमें यह भी बताएं कि हम 1फाइल से क्यों लौटते हैं। यदि 2 या कुछ और लौटाते हैं, तो यह कोई त्रुटि उत्पन्न नहीं कर रहा है, इसलिए हम 1पर्ल मॉड्यूल से क्यों लौटते हैं ?
.pm(पर्ल मॉड्यूल) और .pl(पर्ल स्क्रिप्ट) फ़ाइल के बीच अंतर क्या है ?
कृपया हमें यह भी बताएं कि हम 1फाइल से क्यों लौटते हैं। यदि 2 या कुछ और लौटाते हैं, तो यह कोई त्रुटि उत्पन्न नहीं कर रहा है, इसलिए हम 1पर्ल मॉड्यूल से क्यों लौटते हैं ?
जवाबों:
बहुत ही मूल में, आपके द्वारा उपयोग किए जाने वाले फ़ाइल एक्सटेंशन से कोई फर्क नहीं पड़ता है कि perlउन फ़ाइलों की व्याख्या कैसे की जाती है।
हालाँकि, .pmएक निश्चित निर्देशिका संरचना के बाद फाइलों में मॉड्यूल डालना जो पैकेज नाम का अनुसरण करता है, एक सुविधा प्रदान करता है। इसलिए, यदि आप एक मॉड्यूल है Example::Plot::FourDऔर आप इसे एक निर्देशिका में डाल Example/Plot/FourD.pmएक पथ में अपने में @INCतो, useऔर requireजब में के रूप में पैकेज का नाम दिया सही काम करेंगे use Example::Plot::FourD।
फ़ाइल को किसी भी आरंभीकरण कोड के सफल निष्पादन को इंगित करने के लिए अंतिम विवरण के रूप में सही लौटना चाहिए, इसलिए यह ऐसी फ़ाइल को समाप्त करने के लिए प्रथागत है
1;जब तक कि आप यह सुनिश्चित नहीं करते हैं कि यह अन्यथा वापस आ जाएगी।1;यदि आप अधिक कथन जोड़ते हैं तो यह बेहतर है कि आप इसे डालें ।यदि
EXPRएक नंगे तार है, तोrequireएक ".pm" एक्सटेंशन मान लेता है और आपके लिए फ़ाइल नाम में "::" के साथ "" को बदल देता है, जिससे मानक मॉड्यूल लोड करना आसान हो जाता है। मॉड्यूल को लोड करने का यह रूप आपके नाम स्थान को बदलने का जोखिम नहीं उठाता है।
सभी useप्रदान किए गए पैकेज नाम से फ़ाइल नाम का पता लगाना है, requireयह एक BEGINब्लॉक में है और importपैकेज पर आह्वान करता है। आपको उपयोग न करने से नहीं useबल्कि उन चरणों को मैन्युअल रूप से लेने से रोकना है ।
उदाहरण के लिए, नीचे मैंने Example::Plot::FourDपैकेज को एक फ़ाइल में रखा है जिसे फ़ाइल t.plमें स्क्रिप्ट में लोड किया है s.pl।
C:\Temp> cat t.pl
package Example::Plot::FourD;
use strict; use warnings;
sub new { bless {} => shift }
sub something { print "something\n" }
"Example::Plot::FourD"
C:\Temp> cat s.pl
#!/usr/bin/perl
use strict; use warnings;
BEGIN {
require 't.pl';
}
my $p = Example::Plot::FourD->new;
$p->something;
C:\Temp> s
something
यह उदाहरण दिखाता है कि मॉड्यूल फ़ाइलों को समाप्त करने की आवश्यकता नहीं है 1, कोई भी सच्चा मूल्य होगा।
A .pl एक एकल स्क्रिप्ट है।
.Pm ( पर्ल मॉड्यूल ) में आपके कार्य हैं जिन्हें आप अन्य पर्ल स्क्रिप्ट से उपयोग कर सकते हैं:
एक पर्ल मॉड्यूल पर्ल कोड का एक स्व-निहित टुकड़ा है जिसका उपयोग पर्ल प्रोग्राम या अन्य पर्ल मॉड्यूल द्वारा किया जा सकता है। यह वैचारिक रूप से सी लिंक लाइब्रेरी या सी ++ क्लास के समान है।
1कोई बात नहीं। यह हो सकता है2, यह हो सकता है"foo", यह हो सकता है["a", "list"]। जो बात मायने रखती है, वह नहीं है0, या ऐसा कुछ भी नहीं है जो असत्य के रूप में मूल्यांकन करता है, याuseविफल होगा।