我正在尝试执行一个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,但有没有人知道如何解决它?
谢谢!
答案 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
所在的目录(或多或少)。