我有一个模块misc
具有可变$verbose
:perl的:模块间变量使用
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");
当我exe可爱myprog
,我得到这样的警告:
Use of uninitialized value $misc::verbose in numeric gt (>) at mymod.pm line ...
我究竟做错了什么?
顺便说一句在声明一个包之前使用模块是微妙的错误。像'use strict'和'use diagnostics'这样的事情发生了,因为它们是词法的(即它们在哪个块中)并且不关心包,但其他人关心它们在哪个包中,特别是如果它们导出函数。 – Schwern 2012-08-14 17:46:08
所以,它应该是“包mymod;使用...”?谢谢。 – sds 2012-08-14 19:27:49