perl解释器的状态代码是什么意思?

时间:2010-03-12 12:18:57

标签: java perl exec exit-code

我正在尝试使用Java的Runtime.exec()执行Perl解释器的副本。但是,它返回了错误代码9。在运行该文件几次后,perl解释器神秘地开始返回代码253,而我的命令完全没有变化。

代码253 /代码9是什么意思?谷歌搜索perl翻译的退出代码一事无成。我在哪里可以找到Perl解释器的退出代码列表?

5 个答案:

答案 0 :(得分:7)

请参阅perldoc perlrun

  

如果程序在语法上是正确的,则执行该程序。如果程序在没有点击exit()die()运算符的情况下运行结束,则会提供隐式exit(0)以表示成功完成。

因此,您运行的程序必须以某种方式通过dieexit或等效的方式指定这些退出值。

答案 1 :(得分:4)

在正常情况下,perl将返回它运行的程序返回的任何内容。因此,如果不知道正在运行的程序,就无法概括返回值的含义。

答案 2 :(得分:4)

Perl本身没有任何已定义的退出代码;除非perl解释器以非常可怕的方式崩溃,否则退出代码由perl正在运行的程序确定,而不是由perl本身确定。

答案 3 :(得分:3)

如果脚本没有运行,perl解释器实际上返回它自己的退出代码。大多数语法错误导致退出代码9:

未知功能/不允许使用裸字:

perl -e 'use strict; print scalar(localtime); schei;'

$? = 9

除以零:

perl -e 'use strict; print scalar(localtime); my $s = 1/0;'

$? = 9

语法错误:

perl -e 'use strict; print scalar(localtime); my $ff; $ff(5;'

$? = 9

使用die:

perl -e 'use strict; print scalar(localtime); die "twaeng!"'

$? = 9

一个未知模块是我发现perl以不同方式退出的唯一情况:

perl -e 'use strict; use doof; print scalar(localtime);'

$? = 2

BTW我还在寻找perl解释器退出代码的完整列表。除了perl口译员的消息来源,任何人都知道在哪里看?

答案 4 :(得分:1)

由于错误代码在某些运行后发生了变化;如果您正在运行Java应用程序作为持续运行的webapp,请检查它是否可能是某种内存泄漏。

您可以使用perl解释程序的perl选项运行它来解决各种问题的-Tw脚本,对于已启用的污染模式和警告,请参阅perlrun以获取有关这些问题的详细信息。< / p>