Perl 中的错误级别
我需要根据上一步的返回代码终止 perl 脚本。
类似于
IF ERRORLEVEL 1 goto ERROR
批处理。
我
$PROG = `spu_comp 2>&1 $a 1 1`;
需要如果此步骤出现错误,程序应该终止。
预先感谢您的投入。
I need to terminate the perl script according to the return code from the previous step.
something like
IF ERRORLEVEL 1 goto ERROR
in batch processing.
i have
$PROG = `spu_comp 2>&1 $a 1 1`;
i need if this step gives error, program should terminate.
thanks in advance for your inputs.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
在分配给
$PROG
的行之后,立即添加以下行:Immediately after the line where you assign to
$PROG
, add this line:看来 ERRORLEVEL 并不是 perl 的真正退出代码。
我也有同样的问题。一个bat文件
一个perl文件
产量输出
一个perl文件
将产量
It appears that ERRORLEVEL is not a true exit code to perl.
i have the same issue. A bat file of
With a perl file of
Yields output of
A perl file of
will yield
您可以通过添加以下行从 $PROG 获取正确的返回代码。
或者更简洁的方法
然后将 $ret 与您可以检索的可能值进行比较
You can get the correct return code from $PROG by adding the following line.
or a cleaner way
Then compare the $ret with the possible values you can retrieve
除了 @husker 的回答之外,值得注意的是
$?
仅适用于 255 或更少的代码。 Windows 错误代码通常会超过这个值。然而, IPC::System::Simple 模块提供了类似的方法可以正确检索代码的capture()
> 255.例如
Further to @husker's answer, it's worth noting
$?
only works for codes of 255 or less. Windows error codes typically exceed this. The IPC::System::Simple module, however, provides methods likecapture()
that can correctly retrieve codes > 255.e.g.