我对此的理解是:
编译时 错误是保持perl无法解析文件的错误;比如缺少分号。
运行时错误 是一个无法检测到的错误,直到代码运行为止;例如除以零错误或调用未定义的子程序。
由于perl是一种解释器语言,整个代码或脚本是否会被编译一次然后运行,或者它会为每一行编译然后运行。
有人可以告诉我这件事。
答案 0 :(得分:2)
答案 1 :(得分:0)
Perl是一种解释语言,这意味着每次尝试启动脚本时,编译阶段和运行阶段都会按顺序发生。
另一方面,编译的语言(C,Pascal等)分离出这两个阶段,并且通常有一个称为链接的中间阶段,它们连接在一起目标文件和库到最终的可执行文件文件中。
在编译语言中,检测未定义的函数可以在编译阶段或链接阶段进行,具体取决于语言规范的严格程度。在原始C调用中,链接器将找到未定义的函数,但在C ++中,它将由编译器找到。
对于更复杂的问题,某些语言(如Java)具有单独的编译和执行阶段,但编译实际上是一个中间的“字节代码”,然后由运行时系统解释(即Java虚拟机。)
严格地说,Perl也使用中间字节代码,但阶段的分离几乎是不可见的。