为什么'use'语句首先在BEGIN块中执行?

Eug*_*ash 5 perl compile-time

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

BEGIN {
    die;
    use SomePackage;
}
Run Code Online (Sandbox Code Playgroud)

为什么use以前执行die

Eug*_*ash 9

use SomePackage 完全等同于

BEGIN { require SomePackage; SomePackage->import }
Run Code Online (Sandbox Code Playgroud)

BEGIN码块被尽快执行的,也就是说,目前它被完全确定.第二个BEGIN(隐含的use)首先被完全定义,因此首先执行.