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コードブロックは、できるだけ早く、つまり完全に定義された瞬間に実行されます。2番目BEGIN(によって暗示されるuse)は最初に完全に定義されるため、最初に実行されます。

于 2011-05-11T12:34:05.597 に答える
1

http://perldoc.perl.org/functions/use.htmlから

使用はコンパイル時に有効になるため、コンパイルされるコードの通常のフロー制御を尊重しません。

于 2011-05-11T12:34:59.263 に答える