从模块导出perl函数的错误方法

时间:2014-06-01 08:25:32

标签: perl module

我有一个非常小的模块,我从导出函数时遇到问题。 如果我使用GetVar()调用它,请使用函数TestMod::GetVar()它会正常工作,但是当我从导入模块的脚本中调用GetVar()时会出现错误(如下所示)。我99%确定我没有正确导出函数GetVar(),但是我找不到我的错误。

模块来源:

#!/usr/bin/perl
use strict;
package TestMod;
our (@ISA, @EXPORT, $VERSION);

use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(&GetVar);
$VERSION = 0.01;


sub GetVar()
{
    return "something";
}

1;

脚本来源:

#!/usr/bin/perl
use strict;
use lib "/home/user1221/projects/";
use module;

print "Version: $TestMod::VERSION";
my $a = GetVar(); #should work but doesn't
print "$a\n";

错误:

Undefined subroutine &main::GetVar called at /home/user1221/projects/module_use.pl line 8.

1 个答案:

答案 0 :(得分:4)

您脚本中的

use module;完全等同于

BEGIN { require module; module->import(); }

但由于您没有module包,因此不会导入任何内容。

您需要的是

BEGIN { require module; TestMod->import(); }

或确保您的模块文件名遵循包名。