【发布时间】:2012-03-15 09:14:22
【问题描述】:
我对此的理解是:
在编译时间期间,错误是导致 Perl 无法解析文件的错误;例如缺少分号。
而运行时错误是在代码运行之前无法检测到的错误;例如除以零错误或调用未定义的子例程。
由于 Perl 是一种解释性语言,整个代码或脚本会编译一次然后运行,还是会为每一行编译然后运行?
解释是什么?
【问题讨论】:
标签: perl
我对此的理解是:
在编译时间期间,错误是导致 Perl 无法解析文件的错误;例如缺少分号。
而运行时错误是在代码运行之前无法检测到的错误;例如除以零错误或调用未定义的子例程。
由于 Perl 是一种解释性语言,整个代码或脚本会编译一次然后运行,还是会为每一行编译然后运行?
解释是什么?
【问题讨论】:
标签: perl
Perl 是一种解释型语言,这意味着每次尝试启动脚本时,编译阶段和运行阶段都会依次发生。
另一方面,编译语言(C、Pascal等)将这两个阶段分开,通常有一个称为链接的中间阶段,它将连接在一起object files和libraries放到最终的executable文件中。
在编译语言中,检测未定义函数可能发生在 compile 阶段或 linking 阶段,具体取决于语言规范的严格程度。在原始 C 中调用未定义函数会被链接器找到,但在 C++ 中,它会被编译器找到。
为了更复杂的事情,一些语言,如Java,有独立的编译和执行阶段,但编译实际上是一个中间“字节码”,然后由运行时系统解释(即 Java 虚拟机)。
严格来说,Perl 也使用了中间字节码,但阶段的分离大多是不可见的。
【讨论】:
BEGIN{} 块。