Perl程序的编译和执行(Compile & Interpret)

大家通常都知道Perl程序算是一种脚本语言,而脚本语言通常都是解释执行的,以区别于传统C程序的编译执行。

实际上Perl程序的执行是分为编译(Compile))和执行(Execution)两个步骤的。

从Perl程序的语法角度看,它允许函数的定义在调用语句之后。比如下面这样:

hello("perl code");

sub hello {
  my $message = shift;
  print "hello $message\n";
}

如果不是先对整个代码进行过“编译”的话,函数定义之前对函数的调用显然是无法执行的。

这一点上,Tcl语言则是一边读取源代码,一边解释执行。因而不允许调用未经定义的命令。

Perl语法的声明(Declaration)和语句(Statement)

Perl程序可以看作是由声明和语句组成。

常见的声明(Declaration)主要是函数声明sub。其他的基本上都是语句(Statement)。

Declaration在编译阶段被处理,随后的程序执行,主要是按顺序执行Statement。

这一点可以解释为什么memoize调用可以写在函数定义之前。因为实际上函数定义在Perl程序的编译阶段先行处理,而memoize调用发生在随后的语句执行阶段。

网络资源

  • http://perldoc.perl.org/perlsyn.html