开始 {...}; 在 Perl 中

69 *_*970 4 perl

我有一个 perl 脚本:

#!/usr/bin/perl 

BEGIN {
        print "That's BEGIN message\n";
BEGIN { print "That's BEGIN-2 message\n"; };
END { print "That's END message\n"; };
BEGIN { print "That's BEGIN-3 message\n"; };
};
Run Code Online (Sandbox Code Playgroud)

它是这样工作的:

That's BEGIN-2 message
That's BEGIN-3 message
That's BEGIN message
That's END message
Run Code Online (Sandbox Code Playgroud)

但为什么?它必须打印在第 1 行That's BEGIN message还是不打印?

Tho*_*key 10

第一个BEGIN完全定义之前不会运行(请参阅文档)。直到最后一个}.

其他人在完全定义时运行 - 更早。