我有一個模塊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