如何在perl中重试循环

时间:2014-12-17 00:11:25

标签: perl foreach exception-handling try-catch eval

我正在做一个Eval来检查服务器是否出现故障

    eval{
      foreach(){
        Processing 10,000 UPCS in API one by one
        }
      };
    if($@){
      continue; 
      sleep(1200);
    }

上面的代码工作正常,但问题是如果服务器发生故障,它会跳过当前的UPC(循环)并且它会处理下一个UPC(循环)。

如果服务器出现故障,我必须重试相同的upc而不是跳过UPC(循环)吗?

1 个答案:

答案 0 :(得分:3)

将eval移动到循环中并使用重做:

foreach ... {
    eval {
    };
    if ($@) {
        sleep 1200;
        redo;
    }
}

虽然我不确定你continue应该做什么;我怀疑它是否符合您的预期。