次のコードを実行すると、 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
コードブロックは、できるだけ早く、つまり完全に定義された瞬間に実行されます。2番目BEGIN
(によって暗示されるuse
)は最初に完全に定義されるため、最初に実行されます。
http://perldoc.perl.org/functions/use.htmlから
使用はコンパイル時に有効になるため、コンパイルされるコードの通常のフロー制御を尊重しません。