我有一个名为的模块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;
Run Code Online (Sandbox Code Playgroud)
在脚本中调用它:
#!/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;
Run Code Online (Sandbox Code Playgroud)
我没有收到任何错误消息.但是当我将模块放在目录中时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;
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
Undefined subroutine &main::my_function called at ./perl.pl line 10.
Run Code Online (Sandbox Code Playgroud)
为什么我收到此错误消息?
dus*_*uff 14
您可能忘了更改包声明
package Helpers;
Run Code Online (Sandbox Code Playgroud)
至:
package TestDir::Helpers;
Run Code Online (Sandbox Code Playgroud)