我似乎被困在尝试访问另一个包中定义的标量,并将示例缩小为一个简单的测试用例,我可以在其中重现问题。
我希望能够使用我们的机制访问对“Example”包中定义的列表的引用,但是,Dumper 显示该变量在 example.pl 中始终未定义:
Example.pm 如下所示:
#!/usr/bin/perl -w
use strict;
use warnings;
use diagnostics;
package Example;
use Data::Dumper;
my $exported_array = [ 'one', 'two', 'three' ];
print Dumper $exported_array;
1;
使用这个包的代码如下所示:
#!/usr/bin/perl -w
use strict;
use warnings;
use diagnostics;
use Data::Dumper;
use lib '.';
use Example;
{ package Example;
use Data::Dumper;
our $exported_array;
print Dumper $exported_array;
}
exit 0;
运行此代码后,第一个 Dumper 运行,一切看起来正常,之后,第二个 Dumper example.pl 运行,然后引用未定义:
$VAR1 = [
'one',
'two',
'three'
];
$VAR1 = undef;
A my
声明不会创建包级变量,也不会在任何名称空间的符号表中输入任何内容。
要执行您想要执行的操作,您必须将第一个文件中的声明更改为
our $exported_array = [ ... ];
然后您可以在另一个文件中访问它
$Example::exported_array
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)