簡體   English   中英

Perl 在@INC 中找不到.pm

[英]Perl Can't locate .pm in @INC

我在同一位置有一個 .pm 和 .pl 文件。 當我執行文件時,它工作正常。 當我將 .pm 和 .pl 文件保存在不同位置時,出現此錯誤。 如何處理這個,請分享您的意見。 感謝你的幫助!

[sjothili@localhost 腳本]$ perl fapatch-prereq.pl 在@INC 中找不到 Fapatching.pm(@INC 包含:/usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5 /vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5.) 在 fapatch-prereq.pl 第 3 行。

[sjothili@localhost Apr3]$ pwd
/scratch/sjothili/perl/Apr3

enter code here cat Fapatching.pm

#!/usr/bin/perl

package Fapatching;

sub doSystemCommand
{
     $systemCommand = $_[0];

    print LOG "$0: Executing [$systemCommand] \n";
     $returnCode = system( $systemCommand );

    if ( $returnCode != 0 )
    {
        die "Failed executing [$systemCommand]\n";
                exit 0;
    }
}



1;
 cat fapatch-prereq.pl
#!/usr/bin/perl
require Fapatching;
Fapatching::doSystemCommand("pwd");

[sjothili@localhost Apr3]$ perl fapatch-prereq.pl /scratch/sjothili/perl/Apr3

[sjothili@localhost script]$ cd ..
[sjothili@localhost Apr3]$ pwd
/scratch/sjothili/perl/Apr3
[sjothili@localhost Apr3]$ cd script/
[sjothili@localhost script]$ ls
fapatch-prereq.pl
`enter code here`[sjothili@localhost script]$ perl fapatch-prereq.pl
Can't locate Fapatching.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at fapatch-prereq.pl line 3.

您沒有指定Fapatching.pm的位置,所以假設您有以下(非常常見的)目錄結構:

$project_home/bin/fapatch-prereq.pl
$project_home/lib/Fapatching.pm

您可以通過在腳本中添加以下內容來解決此問題:

use FindBin qw( $RealBin );
use lib "$RealBin/../lib";

根據您的需要進行調整。

向腳本添加use lib語句會將目錄添加到該特定腳本的@INC 不管是誰在什么環境下運行它。 從這里提到

use lib '/folder1/folder2/package';
use Fapatching;

感謝作者:Gabor Szabo 我不推薦,但我在這里提到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM