我制作了自己的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
有什么我忽略了吗?
答案 0 :(得分:2)
目前还不清楚事情在哪些方面开始出错。
首先,test.pm
是Perl模块的错误名称。 Perl模块的名称应以大写字母开头(并且已经采用Test.pm
)。
您应该在编写代码之前运行h2xs
- 因为它会生成一个模块框架供您填写。我希望它没有用几乎为空的文件覆盖您的代码!值得注意的是,大多数人多年前停止使用h2xs
。这些天我们有Module::Starter等工具。
然后,运行make install
(您需要使用root权限 - 通常使用sudo
)是将模块安装到系统库中的原因。之后不应该运行cp
命令。
至于为什么你的代码找不到模块,有很多可能的原因。您使用的是Perl 5.10还是安装了其他Perl版本?您尝试使用的代码是什么样的? test.pm是否仍然包含您认为它的代码?
需要更多信息在这里提供帮助。