2014-01-29 47 views
1

我實際上是在重構我的一些同事的代碼,我有一個問題。 在網上搜索沒有給我什麼好,所以它是:Perl exp_continue函數是如何工作的?

我產卵了一個新的期望連接到每個路由器&交換機。 它連接每一次,希望像這樣的作品:

$exp->expect ($timeout, 
     [qr/[Pp]assword:\s*/ => sub { 
      #Some work 1 
     }], 
     [qr/.*Are you sure you want to continue connecting.*/ => sub { 
      $exp->send("yes\n"); 
      exp_continue; 
     }], 
     [qr/.*refused.*/ => sub { 
      # some code 3 
     }], 
    ); 

我希望它從第一個語句重新開始,可能需要一些遞歸。 當「exp_continue」達到時,會發生什麼情況?它會從第一個qr開始還是繼續到第三個?

感謝

回答

1

決不perl的工作期望方案,但根據筆者這非常類似於期望。

摘自探索通過多恩·利伯斯期望採取:

當作爲預期動作執行時,所述指令exp_continue使控制是 繼續當前期望命令內部。期望繼續嘗試匹配 模式,但是從開始,在之前匹配之後停止。期望有效地重複 其搜索,就好像它已被再次調用一樣。

一個快速測試是讓它檢查連接正則表達式前後的密碼正則表達式,然後顯示一個msg來顯示哪個塊被執行。

+0

是的,在一些嘗試之後,看起來exp_continues從上次期望的開始開始。 –