gpt4 book ai didi

perl - 在 Perl 中,如何访问另一个包中定义的标量?

转载 作者:行者123 更新时间:2023-12-04 16:30:13 24 4
gpt4 key购买 nike

我似乎在尝试访问另一个包中定义的标量时陷入困境,并将示例范围缩小到一个简单的测试用例,我可以在其中重现该问题。
我希望能够使用我们的机制访问对“示例”包中定义的列表的引用,但是,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;

最佳答案

一个 my声明不会创建包级变量,也不会在任何命名空间的符号表中输入任何内容。

为了做你想做的事情,你必须将第一个文件中的声明更改为

our $exported_array = [ ... ];

然后您可以在另一个文件中访问它
$Example::exported_array

关于perl - 在 Perl 中,如何访问另一个包中定义的标量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4379257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com