perl:模块间变量使用

时间:2012-08-14 17:28:45

标签: perl perl-module

我有一个变量为misc的模块$verbose

use strict;
use diagnostics;
package misc;
my $verbose = 1;

和使用mymod的模块misc

use strict;
use diagnostics;
use misc;
package mymod;
sub mysub ($) {
  ...
  ($misc::verbose > 0) and print "verbose!\n";
}

反过来由myprog

使用
use strict;
use diagnostics;
use misc;
use mymod;
mymod::mysub("foo");

当我执行myprog时,我收到此警告:

Use of uninitialized value $misc::verbose in numeric gt (>) at mymod.pm line ...

我做错了什么?

1 个答案:

答案 0 :(得分:3)

mymod.pm你应该使用:

our $verbose = 1;

而不是:

my $verbose = 1;

警告是因为$misc::verbose尝试访问$verbose包中的包变量 misc,但是没有声明。

my函数创建一个词法范围的变量。在这种情况下,您需要一个包范围的变量,该变量是使用our函数创建的。

请注意 daxim comment