为什么在成功运行Perl脚本后退出代码为1?

pau*_*ler -1 perl batch-file exit-code

当我尝试运行我的Perl脚本时,它会成功执行.后来,当我运行这个命令时echo %errorlevel%,它给出了输出为1.为什么?

ike*_*ami 5

如果Perl返回错误级别1,则exit(1)调用其中之一

>perl -e"exit 1"
>echo %errorlevel%
1
Run Code Online (Sandbox Code Playgroud)

或者$?设置为1END处理程序

>perl -e"END { $? = 1; }"
>echo %errorlevel%
1
Run Code Online (Sandbox Code Playgroud)

或程序去世时$!1

>perl -e"$!=1; die;"
Died at -e line 1.
>echo %errorlevel%
1
Run Code Online (Sandbox Code Playgroud)

(这通常表示系统调用失败并显示"不允许操作")

>perl -E"say $!=1"
Operation not permitted
Run Code Online (Sandbox Code Playgroud)

或者当程序死亡$!0$?(1 << 8).

>perl -e"$!=0; $?=1<<8; die;"
Died at -e line 1.
>echo %errorlevel%
1
Run Code Online (Sandbox Code Playgroud)

我想在其他情况下(例如装载自身的问题)perl可以退出,但我不知道任何这种情况.1perl