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