次のコードを実行すると、 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から
使用はコンパイル時に有効になるため、コンパイルされるコードの通常のフロー制御を尊重しません。