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输出到标准输出。