我有一个名为Helpers.pm的模块
use warnings;
use 5.012;
package Helpers;
use Exporter qw(import);
our @EXPORT_OK = qw(my_function);
sub my_function {
return { one => 1, two => 2 };
}
1;在脚本中调用它:
#!/usr/bin/env perl
use warnings;
use 5.012;
use Data::Dumper;
use FindBin qw($RealBin);
use lib $RealBin;
use Helpers qw(my_function);
my $ref = my_function();
say Dumper $ref;并且我没有收到任何错误消息。但是当我将模块放在目录TestDir中时,可以像这样修改脚本:
#!/usr/bin/env perl
use warnings;
use 5.012;
use Data::Dumper;
use FindBin qw($RealBin);
use lib $RealBin;
use TestDir::Helpers qw(my_function);
my $ref = my_function();
say Dumper $ref;我收到这个错误消息:
Undefined subroutine &main::my_function called at ./perl.pl line 10.为什么会出现此错误消息?
发布于 2012-03-10 17:00:55
您可能忘记了将包声明从
package Helpers;至:
package TestDir::Helpers;发布于 2012-03-10 16:56:01
我想是因为它在库路径http://perldoc.perl.org/lib.html中找不到你的模块。
use lib 'TestDir';
use Helpers qw(my_function);https://stackoverflow.com/questions/9645023
复制相似问题