为什么Perl不能在我的t /目录中找到库?

时间:2009-08-05 20:36:20

标签: perl

我的当前目录/ 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;

我做错了什么?

4 个答案:

答案 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;