我有这个
main.pl
use Second;
sub main {
our $var = 0;
subroutine()
}
Second.pm
Package Second;
use Exporter;
our @ISA=qw(Exporter);
our @EXPORT=qw(subroutine);
use strict;
our $var;
sub subroutine{
print $var;
}
给出错误
在
打印时使用未初始化的值
如何在没有相似参数的情况下发送该变量?
答案 0 :(得分:1)
main.pl
中的代码没有package
语句,因此默认情况下每个包标识符都在main
包中。这意味着our $var=0
将变量$main::var
设置为零,与模块文件中的变量$Second::var
无关
解决此问题的明显方法是在main.pl
中对变量标识符进行完全限定,就像这样
use strict;
use warnings;
use Second;
$Second::var = 0;
subroutine()
请注意,P
中的Package
中的资金Second.pm
不应该存在。此外,最好从import
导入Exporter
子例程,而不是将其子类化;并且模块在编译时应始终返回 true 值。该文件应如下所示
package Second;
use strict;
use warnings;
use Exporter 'import';
our @EXPORT = qw(subroutine);
our $var;
sub subroutine {
print $var;
}
1;