Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl Net::Telnet::Cisco命名参数错误_Perl_Parameters - Fatal编程技术网

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

Perl Net::Telnet::Cisco命名参数错误,perl,parameters,Perl,Parameters,我正在尝试完成一些脚本编写工作,以便将更改部署到大约400台Cisco设备上。我已经修改了一个perl脚本,在我的生命中,我无法理解命名参数组件 在文件中,他们有: $ok = $obj->cmd($string); $ok = $obj->cmd(String => $string, [Output => $ref,] [Prompt => $match,] [

我正在尝试完成一些脚本编写工作,以便将更改部署到大约400台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);

您的
$obj
是否实际上是
main
命名空间中的全局
$OPENRTR
,并且您是从另一个包调用它的?为什么?这些错误消息是两个不同的错误。将第一行中的元素数为奇数的行切掉。您的代码中是否有
use strict
use warnings
?全局中的对象基于原始脚本,我没有编写它,只是使用它,因此我不必重新编写控制盘。我的代码中有使用警告。很难从文档中看出问题中的代码。事实上OP用错了。他们做了
cmd(foo=>“bar”、[baz=>“qux”、“asd”=>“fgh”])
而不是
cmd(foo=>“bar”、[baz=>“qux”]、[“asd”=>“fgh”])
,正如文档所建议的那样。我也尝试过这种格式,但它不起作用。@choroba simbabque建议,将每个可选参数放在单独的“[]”语句中。看起来你的文件正在运行,把它们全部包括进去感觉像个白痴。@Davidstasar:我可能会提交一份错误报告来获取文档。