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

前端之家收集整理的这篇文章主要介绍了如何将包符号导出到Perl中的命名空间?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我无法理解如何将包符号导出到命名空间.我几乎相同地遵循了文档,但似乎不知道任何导出的符号.

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代替.

猜你在找的Perl相关文章