我有一个非常小的模块,我从导出函数时遇到问题。
如果我使用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.
答案 0 :(得分:4)
use module;
完全等同于
BEGIN { require module; module->import(); }
但由于您没有module
包,因此不会导入任何内容。
您需要的是
BEGIN { require module; TestMod->import(); }
或确保您的模块文件名遵循包名。