【问题标题】:Perl Net::Appliance::Session waitfor?Perl Net::Appliance::Session 等待?
【发布时间】:2012-09-04 12:51:55
【问题描述】:

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

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

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

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

执行此报告以下错误:

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

你知道我该怎么做吗?为什么我会收到此错误消息?

提前谢谢..

【问题讨论】:

    标签: perl


    【解决方案1】:

    来自Net::Appliance::Session 页面meta::cpan

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

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

    【讨论】:

    • 你能给我一些精确的代码示例吗?因为我已经阅读了所有文档,但我无法将它们放在一起。提前致谢。
    • 我没有代码可以给你看。你设置了短语手册吗?您是否使用 macro() 方法调用了该短语?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    相关资源
    最近更新 更多