我得到了一个包,为了简单起见,我们称它为Foo.pm。在那里,我得到了一些匿名函数,我想导出这些函数。
Foo.pm 看起来如下:
package Foo;
use Exporter qw(import);
our @EXPORT_OK = ();
our @EXPORT = qw(
subroutine1
subroutine2
$anon_function
);
subroutine1 {
# Do something here
}
subroutine2 {
# Do something else here
}
my $anon_function = sub {
my $parameter = shift;
# Do something with parameter
return 1 if $parameter == 1 or $parameter == 2;
return 0;
}
在我的主脚本中,将其命名为bar.pl,我导入模块并(显然)使用其函数。
bar.pl:
use lib "/usr/share";
use Foo;
subroutine1("foobar");
subroutine2("foobar");
&$anon_function("foobar");
在www.example.com之外使用正常的子例程Foo.pm似乎没有问题,但当我到达&$anon_function()
时,它会产生以下错误:
Use of uninitialized value in subroutine entry at ./bar.pl line 7
当尝试使用print Dumper \$anon_function
打印匿名函数时,它也返回$VAR1 = \undef
TL;DR:如何从包中导出匿名函数?
1条答案
按热度按时间whlutmcx1#
不能导出词法变量。只能导出符号,即程序包全局变量和命名子例程。
更改为our的工作方式: