Wydaje mi się, że mam problem z zrobieniem pierwszego, prostego pakietu (w rzeczywistości jest to mój pierwszy pakiet). Robię wszystko, co powinienem robić (chyba) i nadal nie działa. Oto pakiet (myślę, że można nazwać to moduł):Tworzenie pakietów za pomocą Perla
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;
Uratowałem ten moduł jako mymodule (tak, to był zapisany jako plik .pm) w Perl/site/lib
(to jest, gdy wszystkie moje modułów które nie są wbudowane są przechowywane). Potem próbowałem za pomocą tego modułu inn skrypt Perl:
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";
zapisać to jako my.pl
. Następnie uruchamiam my.pl
i otrzymuję komunikat o błędzie:
Undefined subroutine &main::func1 called at C:\myperl\examplefolder\my.pl line 7.
Czy ktoś może wyjaśnić, dlaczego tak się dzieje? Z góry dziękuję!
Uwaga: Tak moi przykłady były z Perl Monks. Zobacz the Perl Monks "Simple Module Tutorial". Dziękujemy tachyon!
Odsunął się, ponieważ pytanie nie miało sensu, gdy 'Mine :: MyModule' zmieniono na' MyModule' – Zaid