2011-08-24 15 views
6

İlk, basit Paketimi (aslında ilk paket süremdir) yapmakta çok fazla sorun yaşıyorum. Yapmam gereken her şeyi yapıyorum (bence) ve hala çalışmıyor. İşte Paketi (sana bir Modülü denebilir sanırım): Ben bu (Perl/site/lib yılında (evet, bu bir .pm dosyası olarak kaydedilmiş) MyModule olarak bu modülü kurtardı Perl ile Paket Oluşturma

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; 

nerede modüllerin hepsi yerleşik olmayanlar saklanır). Sonra bu modül Han bir Perl script kullanarak çalıştı:

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"; 

Ben my.pl olarak bu kaydedin. Sonra my.pl çalıştırın ve bu hatayı alıyorum: Bu durumda neden

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

Birisi açıklayabilir misiniz? Şimdiden teşekkürler!

Not: Evet benim örnekler Perl Monks geliyordu. Bakınız the Perl Monks "Simple Module Tutorial". Teşekkür ederiz tachyon!

+0

Geri Döndü çünkü soru benim için anlamlı değildi çünkü 'Mine :: MyModule' 'MyModule ' – Zaid

cevap

3

Paket adınız ve kullanım adınız eşleşmiyor. Eğer bir klasörün içinde modül denilen varsa Mine o zaman buna göre paket adlandırmak gerekir: bu klasöre yoksa

package Mine::MyModule

o zaman use çağrısından kaldırmak gerekir

use MyModule

+0

WOW olarak değiştirildi! Şimdi aptalca düştüm. Teşekkürler. Bu arada, düzenlenmeden önce Mine dizininde idi. – Dynamic

2

o

package Mine::MyModule; 

olmalıdır Ve shoul d Perl/site/lib altındaki Mine dizininde bulun.

+0

Çok teşekkür ederim. – Dynamic