5

我正在阅读此文档以了解 Perl 程序的生命周期。

在这样的命令行上运行 Perl 脚本时,运行时和编译时事件何时发生:

perl my_script.pl
4

1 回答 1

15

perl script.pl将编译script.pl然后执行script.pl。同样,require Module;将编译Module.pm然后执行Module.pm

如果编译器遇到一个BEGIN块,它会在该块被编译后立即执行该块。请记住,这use是一个由 a和可能 aBEGIN组成的块。requireimport

例如,

# script.pl
use Foo;
my $foo = Foo->new();
$foo->do();

做:

  1. 编译script.pl
    1. 编译use Foo;
    2. 执行require Foo;
      1. 编译Foo.pm
        1. ...
      2. 执行Foo.pm
        1. ...
    3. 执行import Foo;
    4. 编译my $foo = Foo->new();
    5. 编译$foo->do();
  2. 执行script.pl
    1. 执行my $foo = Foo->new();
    2. 执行$foo->do();
于 2013-02-08T07:29:26.140 回答