如何修改不同包中的Perl变量

时间:2015-06-17 22:24:53

标签: perl module

我有这个

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;
}

给出错误

  

打印时使用未初始化的值

如何在没有相似参数的情况下发送该变量?

1 个答案:

答案 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;