代码之家  ›  专栏  ›  技术社区  ›  futureelite7 Adam Rosenfield

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

  •  4
  • futureelite7 Adam Rosenfield  · 技术社区  · 15 年前

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

    代码是什么 253 代码 意思是?谷歌搜索 珀尔 翻译的出口代码什么也没查到。在哪里可以找到Perl解释器的退出代码列表?

    5 回复  |  直到 11 年前
        1
  •  7
  •   Edurne Pascual Stefan Thyberg    11 年前

    perldoc perlrun :

    如果程序语法正确,则执行。如果程序在未命中 exit() die() 运算符,隐式 exit(0) 用于指示成功完成。

    因此,您运行的程序必须以某种方式通过 die , exit 或等同的。

        2
  •  4
  •   Sinan Ünür    15 年前

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

        3
  •  4
  •   hobbs    15 年前

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

        4
  •  3
  •   elwood    14 年前

    实际上是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解释器的源代码,还有人知道到哪里去查看吗?

        5
  •  1
  •   Thor Hovden    15 年前

    因为错误代码在某些运行之后发生了更改;如果您正在运行 Java 应用作为一个持续运行的webapp,检查它是否可能是某种内存泄漏。

    你可以测试你的 perl 通过使用Perl解释器的 -Tw 选项,有关启用的污染模式和警告,请参阅 perlrun 有关这些的更多信息。