5

当我执行以下代码时,我得到 Can't locate SomePackage.pm in @INC ....

BEGIN {
    die;
    use SomePackage;
}

为什么use之前被执行die

4

2 回答 2

9

use SomePackage完全等同于

BEGIN { require SomePackage; SomePackage->import }

一个BEGIN代码块被尽快执行,即在它被完全定义的那一刻。第二个BEGIN(由 暗示use)首先完全定义,因此首先执行。

于 2011-05-11T12:34:05.597 回答
1

来自http://perldoc.perl.org/functions/use.html

因为 use 在编译时生效,它不尊重正在编译的代码的普通流控制。

于 2011-05-11T12:34:59.263 回答