Perl:qx还是Die

Perl:qx还是Die,perl,idioms,Perl,Idioms,简单任务: 我有一个脚本,其中有一行: qx(wget-p$destination$file)| | die“我无法下载文件:$file!\n” 但每一次(无论成功与否),剧本都会死掉 我应该如何将其转换为习语行为?(成功——活着,不是死) 谢谢你的帮助 某些版本: 我想知道所有日志,所以我更喜欢使用这样的行: 打印qx(…)| |模具“解释”qx与使用相同。它返回正在执行的程序的输出,但只返回其标准输出,而不返回标准输出。wget似乎没有在STDOUT上输出任何东西(它报告STDERR上的进度

简单任务:

我有一个脚本,其中有一行:

qx(wget-p$destination$file)| | die“我无法下载文件:$file!\n”

但每一次(无论成功与否),剧本都会死掉

我应该如何将其转换为习语行为?(成功——活着,不是死)

谢谢你的帮助

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


打印qx(…)| |模具“解释”

qx
与使用相同。它返回正在执行的程序的输出,但只返回其标准输出,而不返回标准输出。wget似乎没有在STDOUT上输出任何东西(它报告STDERR上的进度),因此结果是一个空字符串,在Perl意义上是falsish——调用
die

通常,您不会评估程序的输出以确定其是否成功,而是确定其退出状态。这可以用来完成,因为大多数Unix CLI程序在成功时返回0


如果您首先不需要wget的输出,那么不要使用
qx
,而是。它直接返回程序的退出代码,如果0!=系统(“wget…”)

wget-O-
将所有下载的文件返回到标准输出。由于他正在使用
-p$destination
我怀疑他是否试图将wget输出到标准输出。