首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl: qx或Die

Perl: qx或Die
EN

Stack Overflow用户
提问于 2012-11-22 18:40:55
回答 1查看 1K关注 0票数 2

简单的任务:

我有一个包含行的脚本:

qx(wget -P $destination $file) || die "i can't download file: $file!\n";

但每次(无论成功与否),脚本都会死亡。

我应该如何将其更改为习惯用法行为?(成功-活着,不死)

感谢您的帮助!

一些版本:我想知道所有的日志,所以我更喜欢使用这样的语句:

print qx(...)||die"EXPLAIN";

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-22 18:49:25

qx与使用backticks operator相同。它返回正在执行的程序的输出,但只返回其STDOUT的输出,而不返回STDERR的输出。wget似乎没有输出任何关于STDOUT的内容(它报告了关于STDERR的进度),因此结果是一个空字符串,它在Perl意义上是falsish --并且调用die

通常,评估程序的输出并不是为了确定它是否成功,而是为了确定它的退出状态。这可以使用comparing $? to 0来完成,因为大多数Unix CLI程序在成功时都会返回0。

如果您从一开始就不需要wget的输出,那么就不要使用qx,而要使用system。它直接返回程序的退出代码,允许您编写die "oh noes!" if 0 != system("wget ...")

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13510910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档