2017-08-22 390 views
0

我已經作出了自己的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

回答

2

目前還不清楚事情會在哪一點出現問題。

首先,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:聽起來有點像堅持石膏修復。最好建議您解決我的帖子中的許多其他問題。 –