Perl Net :: Appliance :: Session waitfor?

时间:2012-09-04 12:51:56

标签: perl

我遇到Net :: Appliance :: Session的问题。我创建了一个会话,执行了我的命令。执行后它会提示我一些问题(是/否)。我想回答它,但没有找到办法如何做到这一点。下面你可以看到我的试验:

$session->cmd($command);
$session->waitfor(Match=>'/.*yes*/');
$session->print("no");
$session->waitfor(Match=>'');
$session->print("y");

我不知道问题出在哪里。根据CPAN文档编写Net :: Telnet的方法是waitfor。但Session文档告诉我们可以使用waitfor()。另一件事说,方法“cmd”有一个成员匹配,其中包含waitfor()的所有功能。所以我改变了我的代码,如下所示:

$session->cmd($command, Match=>'/.*yes*/');
$session->print("no");

执行以下报告错误:

  

哈希分配中奇数个元素   /usr/lib/perl5/vendor_perl/5.8.8/Net/Appliance/Session.pm第245行。

有什么想法我该怎么做?为什么我收到此错误消息?

提前致谢..

1 个答案:

答案 0 :(得分:0)

来自Net::Appliance::Session

meta::cpan页面

要处理更复杂的交互,例如提示确认或可选参数的命令,您应该使用宏。这些是在短语集中设置的,并通过$s->macro($name)方法调用发出。有关详细信息,请参阅PhrasebookCookbook手册页。

因此,您在短语集中设置了一个宏(脚本调用和响应),然后告诉您的会话使用该宏。