2012-07-30 74 views
1

$ remote-> waitfor('/ Logoff /');Perl telnet登录

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

我已经tryied是这样的:

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

Aaaaand,当你尝试它时发生了什么? – 2012-07-30 07:43:24

回答

2

最“网::远程登录”的方法处理错误是由“errmode”选项中定义的方法。

这当然包括waitfor方法和超时错误。 默认的“errmode”行为是“死”,这意味着你的waitfor调用将不会返回任何地方,并且无处不在。

为了有一个值来检查,你需要设置“errmode”到“回报”:

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,你需要设置匹配模式通过“匹配”选项。

+0

优秀。它的工作很好,谢谢你的快速回答。伟大的工作继续下去。再次感谢你。 – Mujeeb 2012-07-30 08:56:23

+0

并快速投票或回答接受? – Ouki 2012-07-30 19:39:43