即使错误消息在@inc中显示,也无法在@inc中找到perl模块

时间:2013-07-31 15:52:35

标签: perl perl-module locate

我正在尝试执行一个perl脚本,并且在我将它运行在它所在的文件夹中之前我已经让它工作了......即,以下工作。

\higherFolder\folder>UpdateTestCasesScript.pl Test.feature Test_Cases.xls

当我尝试在该文件夹的命令行OUTSIDE上运行此脚本时,Buuuuut

\HigherFolder>folder\UpdateTestCasesScript.pl RealFile.feature folder\Test_Cases.xls

我得到了这个奇怪的错误:

Can't locate Spreadsheet/ParseExcel.pm in @INC <@INC contains: Spreadsheet/Parse
Excel.pl C:/Strawberry/perl/site/lib C:/strawberry/perl/vendor/lib C:/strawberry
/perl/lib .> at C:...\HigherFolder\folder\UpdateTestCasesScript.pl line 4

但是如果你看一下我脚本的前几行......它们是以下内容:

#!/usr/bin/perl -w

use lib 'Spreadsheet/ParseExcel.pm';
use Spreadsheet::ParseExcel;

所以我有一个想法,它可能会以某种方式查看错误的@INC,但有没有人知道如何解决它?

谢谢!

2 个答案:

答案 0 :(得分:7)

use lib的参数应该是包含Spreadsheet/ParseExcel.pm的文件夹,例如:

use lib '/higherFolder/folder';

答案 1 :(得分:2)

.通常位于@INC中,使Perl可以查看模块的当前工作目录。当你更改了CWD时它停止了工作,因为@INC中没有其他内容允许它找到模块。

要查找相对于脚本所在目录的模块:

use FindBin qw( $RealBin );
use lib $RealBin;

顺便说一句,use lib 'Spreadsheet/ParseExcel.pm';没有任何意义。参数应该是Spreadsheet/ParseExcel.pm所在的目录(或多或少)。