当我执行以下代码时,我得到 Can't locate SomePackage.pm in @INC ....
BEGIN {
die;
use SomePackage;
}
为什么use之前被执行die?
当我执行以下代码时,我得到 Can't locate SomePackage.pm in @INC ....
BEGIN {
die;
use SomePackage;
}
为什么use之前被执行die?
use SomePackage完全等同于
BEGIN { require SomePackage; SomePackage->import }
一个BEGIN代码块被尽快执行,即在它被完全定义的那一刻。第二个BEGIN(由 暗示use)首先完全定义,因此首先执行。
来自http://perldoc.perl.org/functions/use.html
因为 use 在编译时生效,它不尊重正在编译的代码的普通流控制。