无法安装我自己的perl模块(pm文件)

时间:2017-08-22 08:39:38

标签: perl module

我制作了自己的perl模块(pm文件),命名为test.pm

package test;
use Exporter;
use strict;
use File::Basename qw(basename dirname);
use Cwd qw(abs_path);
use File::Path qw(make_path);
use FindBin qw($Bin $Script);
BEGIN {
        our @ISA = qw(Exporter);
        our @EXPORT = qw(mkdirOrDie);
        our $VERSION = 1.0;
}

sub mkdirOrDie
{
    my ($dir) = @_ ;
    if(!-d $dir){
        make_path($dir);
        $dir=abs_path($dir);
#       timeLog("Directory Created: $dir");
    }
}

我尝试按如下方式安装此模块,

h2xs -AX -n  test

perl Makefile.PL
make
make install

没有错误,我将test.pm复制到/usr/lib64/perl5/5.10.0/,但是当我使用test调用子函数时,发生了错误,

Undefined subroutine &main::mkdirOrDie called at /to/my/path/main.pl line 92

有什么我忽略了吗?

1 个答案:

答案 0 :(得分:2)

目前还不清楚事情在哪些方面开始出错。

首先,test.pm是Perl模块的错误名称。 Perl模块的名称应以大写字母开头(并且已经采用Test.pm)。

您应该在编写代码之前运行h2xs - 因为它会生成一个模块框架供您填写。我希望它没有用几乎为空的文件覆盖您的代码!值得注意的是,大多数人多年前停止使用h2xs。这些天我们有Module::Starter等工具。

然后,运行make install(您需要使用root权限 - 通常使用sudo)是将模块安装到系统库中的原因。之后不应该运行cp命令。

至于为什么你的代码找不到模块,有很多可能的原因。您使用的是Perl 5.10还是安装了其他Perl版本?您尝试使用的代码是什么样的? test.pm是否仍然包含您认为它的代码?

需要更多信息在这里提供帮助。