4

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

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

4

5 回答 5

7

请参阅perldoc perlrun

如果程序在语法上是正确的,它就会被执行。如果程序运行结束而没有碰到exit()ordie()运算符,则提供一个隐式exit(0)表示成功完成。

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

于 2010-03-12T12:28:31.320 回答
5

如果脚本没有运行,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

使用模具:

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

美元?= 9

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

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

美元?= 2

顺便说一句,我自己仍在寻找 perl 解释器退出代码的完整列表。除了 perl 解释器源之外,任何人都知道在哪里看?

于 2010-11-06T00:53:46.263 回答
4

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

于 2010-03-12T12:23:51.770 回答
3

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

于 2010-03-12T12:26:42.683 回答
1

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

perl您可以通过使用 perl 解释器的选项运行脚本来从各种问题中测试您的脚本-Tw,对于启用的污染模式和警告,请参阅perlrun以获取有关这些的更多信息。

于 2010-03-12T12:38:31.017 回答