1

$remote->waitfor('/​​注销/');

我有时会收到错误消息,说当服务器不可用时模式匹配超时。我想处理这个错误。每当发生此错误时,我想让我的脚本休眠 1 分钟并尝试重新登录。

我试过这样的事情:

  if($remote->waitfor('/Logoff/')) 
   {
     #proceed login perform intended operations.
   }
   else
   {
      sleep(60);#control is not coming here. returning pattern match timed-out error.
   }
4

1 回答 1

2

大多数“ Net::Telnet ”方法处理错误的方式是由“ errmode ”选项定义的。

这当然包括waitfor方法和超时错误。默认的“ errmode ”行为是“die”,这意味着您的waitfor调用将不返回任何内容并且无处可去。

要检查一个值,您需要将“ errmode ”设置为“ return ”:

 if($remote->waitfor( -match => '/Logoff/', -errmode => 'return' )) 
   {
     #proceed login perform intended operations.
   }
   else
   {
      sleep(60); #returning pattern match timed-out error (or something else).
   }

注意:当您为 指定附加选项时waitfor,您需要通过“匹配”选项设置匹配模式。

于 2012-07-30T08:37:47.770 回答