Perl exp_continue函数如何工作?

时间:2014-01-29 14:08:38

标签: perl switch-statement expect router continue

我实际上正在重构我的一些同事的代码,我有一个问题。 在网上搜索没有给我任何好处,所以它是:

我正在产生一个新的Expect连接到每个路由器&开关。 每次连接时,期望都是这样的:

  $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 个答案:

答案 0 :(得分:1)

从未使用过perl expect软件包,但根据作者的说法,它非常类似于期望。

摘自Don Libes的探索期待:

  

当作为expect动作执行时,命令exp_continue导致控制   继续在当前的期望命令。期待继续尝试匹配   模式,但来自上一场比赛后停止的地方。期待有效重复   它的搜索就好像它再次被调用一样。

快速测试是在连接正则表达式之前和之后检查密码正则表达式,然后显示一个msg以显示执行了哪个块。