0

我有一个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 ...

我究竟做错了什么?

4

1 回答 1

3

mymod.pm你应该使用:

our $verbose = 1;

代替:

my $verbose = 1;

警告是因为$misc::verbose试图访问包中的包变量 ,顺便说一下,它没有被声明。$verbosemisc

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

请关注大信评论

于 2012-08-14T17:32:57.537 回答