安装失败

问题描述:

我已经作出了自己的Perl模块(PM文件)我自己的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/,但是当我使用测试调用子功能,发生了错误,

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

有什么我忽略?

+1

这不是一个非常聪明的名字。它可能会与其他东西冲突。另请注意,模块应始终以大写字母开头。小写字母包是为了编译。 – simbabque

+0

@simbabque +1,谢谢您的好意,我会关注这类问题。 – JunhuiLi

目前还不清楚事情会在哪一点出现问题。

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

你应该前编写代码运行h2xs- 因为它会产生一个模块的骨架为您填写我希望它一直没有与一个几乎空文件覆盖你的代码!值得注意的是,多数人在多年前停止使用h2xs。现在我们有像Module::Starter这样的工具。

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

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

需要更多的信息在这里有很大的帮助。

+0

谢谢你提醒我,我发现系统中有几个库,我只是通过添加'use lib来解决它“/usr/lib64/perl5/5.10.0/” – JunhuiLi

+0

@JunhuiLi:听起来有点像坚持石膏修复。最好建议您解决我的帖子中的许多其他问题。 –