Perl模块用法

Mos*_*ose 8 perl perl-module

我想在/ usr/local/lib/perl中创建自己的Perl模块

我有环境变量PERL5LIB设置:

$ env | grep PERL
PERL5LIB=/usr/local/lib/perl
Run Code Online (Sandbox Code Playgroud)

如果我创建一个模块:$ 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.
Run Code Online (Sandbox Code Playgroud)

test.pl:

#!/usr/bin/perl

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

my $test = new My::ModuleTest;
print $test->check;
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

我想使用$ 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
.
Run Code Online (Sandbox Code Playgroud)

Kon*_*rak 10

试试package My::ModuleTest;你的文件ModuleTest.pm- 你应该使用全名.

  • 谢谢。顺便说一句,很好的问题-所有必要的信息都在那里,您已经展示了您尝试过的所有内容,允许我们重新创建情况,格式完美……您应该得到快速答复:] (2认同)