当我执行下面的代码时,我得到了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