Использование Perl Module - PullRequest
       10

Использование Perl Module

8 голосов
/ 17 января 2012

Я пытаюсь создать свой собственный модуль Perl в / usr / local / lib / perl

У меня установлена ​​переменная среды PERL5LIB:

$ env | grep PERL
PERL5LIB=/usr/local/lib/perl

Если я создаю модуль: $ PERL5LIB / My / ModuleTest.pm

$ ./test.pl 
Can't locate object method "new" via package "My::ModuleTest" (perhaps you forgot to load "My::ModuleTest"?) at ./test.pl line 8.

test.pl:

#!/usr/bin/perl

use strict;
use warnings;
use My::ModuleTest;

my $test = new My::ModuleTest;
print $test->check;

ModuleTest.pm:

package ModuleTest;

use strict;
use warnings;

sub new {
        my $class = shift;
        my ($opts)= @_;
        my $self = {};
        $self->{test} = "Hello World";

        return bless $self, $class;
}
sub check {
        my $self = shift;
        my ($opts) = @_;

        return $self->{test};
}
1;

Я хочу использовать $ PERL5LIB в качестве пути к библиотеке для моих модулей, чтобы отделить их от установочного каталога.

Perl @INC:

$ perl -le 'print foreach @INC'
/usr/local/lib/perl
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.8
/usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.8
/usr/lib/perl5/vendor_perl
/usr/lib/perl5/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/5.8.8
.

Ответы [ 2 ]

10 голосов
/ 17 января 2012

Попробуйте package My::ModuleTest; в вашем файле ModuleTest.pm - вам следует использовать полное имя.

3 голосов
/ 17 января 2012

Измените первую строку вашего модуля с

package ModuleTest;

на

package My::ModuleTest;
...