开发者

Why is a 'use' statement executed first in a BEGIN block?

When I execute the following code, I get Can't locate SomePackage.pm in @INC ....

BEGIN {
    die;
    use SomePackage;
}

Why is use exe开发者_运维问答cuted before die?


use SomePackage is exactly equivalent to

BEGIN { require SomePackage; SomePackage->import }

A BEGIN code block is executed as soon as possible, that is, the moment it is completely defined. The second BEGIN (which is implied by use) is completely defined first, and is thus executed first.


From http://perldoc.perl.org/functions/use.html

Because use takes effect at compile time, it doesn't respect the ordinary flow control of the code being compiled.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜