perl编译时间和运行时间

问题描述:

我正在阅读this文档以了解Perl程序的生命周期。perl编译时间和运行时间

我无法弄清楚当RUN时间和时COMPILE时间这样的活动在命令行上运行的Perl脚本而发生:

perl my_script.pl 
+2

你有一个实际的问题,我们可以帮助? – ysth

+0

考虑一个例子,假设我在package/module.pm中有一个包。我在我的perl脚本'my_script.pl'中调用了这个模块的'foo()'函数。现在,如果我在** COMPILE **和** RUN **事件发生时运行此脚本'perl my_script.pl', –

+0

perl中没有编译步骤,它是一种解释型语言。解释器在运行时直接解析并运行您的Perl代码。 [http://en.wikipedia.org/wiki/Interpreter_(computing)](http://en.wikipedia.org/wiki/Interpreter_%28computing%29) –

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

如果编译器遇到一个BEGIN块,它将在块编译后立即执行该块。请记住,use是一个BEGIN块,由require和可能的import组成。

例如,

# 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();