我的当前目录/ t中有一个.pm文件,我插入了这行代码:
use lib qw(.);
然后我插入了这行代码
use TestUtil.pm;
其中TestUtil.pm在当前目录中,但我一直收到此错误:
无法在@INC中找到TestUtil.pm(@INC包含:。........(注意@INC包含当前目录)
TestUtil.pm
package TestUtil;
use strict; use warnings;
BEGIN { use Exporter (); use vars qw( $VERSION @ISA @EXPORT );
# Set the version for version checking
$VERSION = 1.00; @ISA = qw( Exporter ); @EXPORT = qw(_a ); }
use vars qw( $VERSION @ISA @EXPORT );
sub _a { return 1; }
test_XXX.t
use lib qw(.); use strict; use warnings;
use TestUtil;
我做错了什么?
答案 0 :(得分:3)
如果你正在运行你的测试:
证明--lib t
然后你的工作目录实际上是高于t /
的级别所以在您的包中(源文件t/TestUtil.pm
)
package t::TestUtil;
use strict; use warnings;
在你的test_XXX.t
中use lib '.';
use t::TestUtil;
我已经在几个CPAN模块中看到过这种方式。
答案 1 :(得分:2)
尝试从“use ...”语句中删除模块名称中的.pm。
答案 2 :(得分:0)
您是否已将TestUtil.pm声明为TestUtil模块?
# in your TestUtil module...
package TestUtil;
编辑:
您的Perl模块(TestUtil.pm)是否返回状态?尝试将其添加到TestUtil.pm文件的末尾:
1;
答案 3 :(得分:0)
在TestUtil.pm
中包TestUtil;
使用严格;使用警告;
BEGIN {use Exporter();使用 vars qw($ VERSION @ISA @EXPORT );
#设置版本的版本 检查
$ VERSION = 1.00; @ISA = qw(出口商); @EXPORT = qw(_a ); }使用vars qw($ VERSION @ISA @EXPORT);
sub _a {return 1; }
在test_XXX.t
中使用lib qw(。); 用严格; 使用警告;
使用TestUtil;