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