當我執行下面的代碼時,我得到了Can't locate SomePackage.pm in @INC ...
。爲什麼在BEGIN塊中首先執行'use'語句?
BEGIN {
die;
use SomePackage;
}
爲什麼use
die
之前執行?
當我執行下面的代碼時,我得到了Can't locate SomePackage.pm in @INC ...
。爲什麼在BEGIN塊中首先執行'use'語句?
BEGIN {
die;
use SomePackage;
}
爲什麼use
die
之前執行?
use SomePackage
是完全等同於
BEGIN { require SomePackage; SomePackage->import }
甲BEGIN
碼塊被儘快執行的,即,它是此刻完全確定。第二個BEGIN
(其暗示爲use
)首先被完全定義,並且因此首先被執行。
適用於Perl arcana的+1。哎喲。 – Axeman 2011-05-11 12:38:10
從http://perldoc.perl.org/functions/use.html
由於使用花費在編譯時間 效果,不尊重代碼是 編譯的普通 流控制。
不太確定,但在編譯時評估使用,並在運行時死亡。 – Toto 2011-05-11 12:33:11
@ M42那麼'BEGIN'塊也會在編譯時進行評估。 – 2011-05-13 08:51:56