Кажется, у меня много проблем с созданием моего первого, простого пакета (на самом деле это мой первый период пакета). Я делаю все, что должен делать (я думаю), и это все еще не работает. Вот пакет (я думаю, вы можете назвать его модулем):
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
(здесь хранятся все мои модули, которые не являются встроенными). Затем я попытался использовать этот модуль в 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";
Я сохраняю это как my.pl
. Затем я запускаю my.pl
и получаю эту ошибку:
Undefined subroutine &main::func1 called at C:\myperl\examplefolder\my.pl line 7.
Может кто-нибудь объяснить, почему это происходит? Заранее спасибо!
Примечание : Да, мои примеры были из Perl Monks . См. Perl Monks "Простое руководство по модулю" Спасибо тахион !