加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何将包符号导出到Perl中的命名空间?

发布时间:2020-12-15 22:00:19 所属栏目:大数据 来源:网络整理
导读:我无法理解如何将包符号导出到命名空间.我几乎相同地遵循了文档,但似乎不知道任何导出的符号. mod.pm #!/usr/bin/perlpackage mod;use strict;use warnings;require Exporter;@ISA = qw(Exporter);@EXPORT=qw($a);our $a=(1);1; test.pl $cat test.pl#!/usr/
我无法理解如何将包符号导出到命名空间.我几乎相同地遵循了文档,但似乎不知道任何导出的符号.

mod.pm

#!/usr/bin/perl

package mod;

use strict;
use warnings;

require Exporter;

@ISA = qw(Exporter);
@EXPORT=qw($a);


our $a=(1);

1;

test.pl

$cat test.pl
#!/usr/bin/perl

use mod;

print($a);

这是运行它的结果

$./test.pl
Global symbol "@ISA" requires explicit package name at mod.pm line 10.
Global symbol "@EXPORT" requires explicit package name at mod.pm line 11.
Compilation failed in require at ./test.pl line 3.
BEGIN failed--compilation aborted at ./test.pl line 3.

$perl -version
This is perl,v5.8.4 built for sun4-solaris-64int

解决方法

没有告诉你出口$a出现问题.告诉你,你有一个声明@ISA和@EXPORT的问题. @ISA和@EXPORT是包变量,严格来说,它们需要使用我们的关键字(或从其他模块导入 – 但不太可能与这两个)进行声明.它们在语义上与$a不同,但功能上不同.

保姆注意:@EXPORT不被视为礼貌.通过Exporter它将其符号转储在使用包中.如果您觉得出口有好处,那么机会就是 – 那么用户要求它是值得的.使用@EXPORT_OK代替.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读