2011-08-24 17 views
6

के साथ पैकेज बनाना मेरे पहले, सरल पैकेज (वास्तव में यह मेरी पहली पैकेज अवधि है) बनाने में बहुत परेशानी हो रही है। मैं सबकुछ कर रहा हूं जो मुझे करना चाहिए (मुझे लगता है) और यह अभी भी काम नहीं कर रहा है। यहाँ पैकेज (मुझे लगता है कि आप इसे एक मॉड्यूल कॉल कर सकते हैं) है:पर्ल

package MyModule; 

use strict; 
use Exporter; 
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); 

$VERSION  = 1.00; 
@ISA   = qw(Exporter); 
@EXPORT  =(); 
@EXPORT_OK = qw(func1 func2); 
%EXPORT_TAGS = (DEFAULT => [qw(&func1)], 
      Both => [qw(&func1 &func2)]); 

sub func1 { return reverse @_ } 
sub func2 { return map{ uc }@_ } 

1; 

मैं इस मॉड्यूल MyModule के रूप में (हाँ, यह एक .pm फ़ाइल के रूप में बचा लिया गया था) Perl/site/lib में (बचाया यह है जहाँ मेरे मॉड्यूल के सभी जो अंतर्निहित नहीं हैं)। तब मैं इस मॉड्यूल सराय एक पर्ल स्क्रिप्ट का उपयोग करने की कोशिश की:

use strict; 
use warnings; 

my @list = qw (J u s t ~ A n o t h e r ~ P e r l ~ H a c k e r !); 

use Mine::MyModule qw(&func1 &func2); 
print func1(@list),"\n"; 
print func2(@list),"\n"; 

मैं my.pl के रूप में सहेजना। फिर मैं my.pl चलाता हूं और यह त्रुटि प्राप्त करता हूं:

Undefined subroutine &main::func1 called at C:\myperl\examplefolder\my.pl line 7. 

क्या कोई यह बता सकता है कि ऐसा क्यों होता है? अग्रिम में धन्यवाद!

नोट: हाँ मेरी उदाहरण Perl Monks से थे। the Perl Monks "Simple Module Tutorial" देखें। धन्यवाद tachyon!

+0

वापस घुमाया गया क्योंकि 'मेरा :: MyModule' के साथ प्रश्न' MyModule' – Zaid

उत्तर

3

आपका पैकेज नाम और आपका उपयोग नाम मेल नहीं खाता है। आप किसी फ़ोल्डर में अपने मॉड्यूल कहा जाता है, तो Mine तो आप उसके अनुसार अपनी पैकेज नाम के लिए की जरूरत है:

package Mine::MyModule

आपको लगता है कि फ़ोल्डर में नहीं है, तो फिर आप को दूर करने कि आपके use कॉल से जरूरत

use MyModule

+0

वाह में बदल नहीं गया था! अब मैं बेवकूफ गिर गया। धन्यवाद। वैसे, यह संपादित होने से पहले खान निर्देशिका में था। – Dynamic

2

यह होना चाहिए

package Mine::MyModule; 

और यह shoul डी पर्ल/साइट/lib के तहत माइन निर्देशिका में हो।

+0

आपको बहुत बहुत धन्यवाद। – Dynamic