You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl中使用File::Copy时,复制失败如何同时打印错误并执行next?

Perl批量复制场景:一行实现失败打印+循环跳过

当然可以写成一行代码,利用Perl的**短路逻辑运算符or**和do代码块就能实现:

copy($source, $dest) or do { print "-E- Copy failed: $partition fusion SDC wasn't found\n"; next; };

原理说明:

  • or是短路运算符:只有左边的copy调用返回假(即复制失败)时,才会执行右边的代码
  • 因为要执行多个语句(打印错误+next),必须用do { ... }把它们包裹成一个代码块,作为or的右操作数
  • 把原代码里的换行替换成\n,是更规范的Perl字符串换行写法

如果想把错误信息输出到标准错误流(而非标准输出),可以把print换成warn,更符合错误信息的输出规范:

copy($source, $dest) or do { warn "-E- Copy failed: $partition fusion SDC wasn't found\n"; next; };

内容的提问来源于stack exchange,提问作者talos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 09:40:33