Perl Net::Telnet::Cisco 命名参数错误

Perl Net::Telnet::Cisco Bad named parameter

我正在尝试完成一些脚本编写,以将更改集中部署到大约 400 台 Cisco 设备。我有一个从 MrAudit that's using Net::Telnet::Cisco 修改而来的 perl 脚本,在我的一生中,我无法弄清楚命名参数组件。

在文档中,他们有:

$ok = $obj->cmd($string);
$ok = $obj->cmd(String   => $string,
                [Output  => $ref,]
                [Prompt  => $match,]
                [Timeout => $secs,]
                [Cmd_remove_mode => $mode,]);

@output = $obj->cmd($string);
@output = $obj->cmd(String   => $string,
                    [Output  => $ref,]
                    [Prompt  => $match,]
                    [Timeout => $secs,]
                    [Cmd_remove_mode => $mode,]
                    [Normalize_cmd => $boolean,]);

我的代码是:

$testString 是我针对设备 运行 的测试命令,$userTest1 是一个正在转换的数组,我希望在其中存储输出。

$::OPENRTR->cmd(String=>$testString,[Timeout=>5,Output=>$userTest1,]);

而且每次,无论我修改哪个组件或尝试以不同的方式编写它,我都会得到错误的变体:

Odd number of elements in hash assignment at(filename)
bad named parameter "ARRAY(0x2e46460)" given to Net::Telnet::Cisco::cmd() at mrAudit-TACACSMod.pl line 279

我知道它必须是简单的东西,但它只是飞过。任何帮助,将不胜感激。

我认为文档中的方括号只是表明参数是可选的,您不应该在实际代码中使用它们:

 $OPENRTR->cmd( String  => $testString,
                Timeout => 5,
                Output  => $userTest1);