Perl 5.10.1错误的问题arg 1的类型必须为哈希

用户名

我对此一无所知。由于我们的Linux标准仍然是RHEL 6,因此我必须使用旧版本的Perl。所以我有Perl 5.10.1。我在5.14中开发了脚本,并且效果很好。迁移到RHEL和较旧的Perl时,会遇到麻烦。

这是作为$ response带回来的信息的DataDump,其后是5.14中使用的代码以及我在5.10.1中尝试过的内容。任何帮助,将不胜感激。

response   => {
                  md5 => {
                    organizations => "b157f81f9469e88fd1ac2435559f558e",
                    scanners => "40e782276cc521ef799cc111a9472cf4",
                    zones => "a41b4d543756320418fce473d97a3b8d",
                  },
                  organizations => [
                    { description => "", id => 1, name => "Our Corporation" },
                  ],
                  scanners => [
                    { description => "", id => 5, name => "BR549-A", status => 1 },
                    {
                      description => "Test VM Scanner in BFE",
                      id => 16,
                      name => "BFENessus01",
                      status => 1,
                    },
                    {
                      description => "Our other Nessus Scanner VM",
                      id => 17,
                      name => "OHTHERNESSUS01",
                      status => 1,
                    },
                    { description => "", id => 49, name => "NYCNESSUS02", status => 1 },
                    { description => "", id => 50, name => "LAX1NESSUS03", status => 1 },
                    { description => "", id => 51, name => "LAX1NESSUS04", status => 1 },
                    { description => "", id => 52, name => "LAX1NESSUS05", status => 1 },
                    { description => "", id => 54, name => "MK-NESSUS", status => 1 },
                    {
                      description => "Networking team's scanner",
                      id => 55,
                      name => "NETEAMNESSUS06",
                      status => 1,
                    },
                },
  timestamp  => 1400177639,
  type       => "regular",
  warnings   => [],
}                   

PERL 5.14版(工作)

while (($key, $value) = each($response->{'response'}{'scanners'} )){
          switch ($value->{'status'}){
          case 1 {print "Status OK \t\t\t"}
          case 2 {print " !! CLOSED !! \t\t\t"}
          case 4 {print " !! TIMEOUT !! \t\t\t"}
          case 16384 {print " ** DISABLED **\t\t\t"}
          case 1024  {print " Updating Plug-Ins \t\t\t"}
          case 1025  {print " ** Updating Plug-Ins **\t\t"}
          case 1281  {print " Attempting to Update\t\t"}
          case 256  {print " !! Out of Date !! \t\t\t"}
          case 257  {print "Plug-Ins Out of Sync !! \t\t"}
          else { print "Status BAD ($value->{'status'}) \t\t"}

          }

          print "$value->{'name'}  $value->{'description'} \n";
}

PERL版本5.10.1(无效)

while (($key, $value) = each($response->{'response'}{'scanners'} )){

错误并带有错误:每个参数的类型1必须在以下位置为哈希值(而不是哈希元素)

更改为:

while (($key, $value) = each(%{$response->{'response'}{'scanners'}} )){

允许其运行,但在以下位置以“非散列引用”停止

池上

$response->{'response'}{'scanners'} 包含对数组的引用,因此您的代码等效于以下内容:

while (my ($key, $value) = each(@{ $response->{response}{scanners} })) {
   ...
}

但是,each不适用于5.10中的数组。以下是等效的:

for my $key (0..$#{ $response->{response}{scanners} }) {
   my $value = $response->{response}{scanners}[$key];
   ...
}

由于您实际上并未使用$key,因此您也可以使用以下内容:

for my $value (@{ $response->{response}{scanners} }) {
   ...
}

注意:建议您不要使用each($ref)除了向后兼容问题之外,它是实验性的,不适用于某些特殊的哈希和数组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Perl 5.10.1错误的问题arg 1的类型必须为哈希

来自分类Dev

Perl数组引用并避免“键1的arg 1类型必须为哈希”错误

来自分类Dev

Perl数组引用并避免“键1的arg 1类型必须为哈希”错误

来自分类Dev

Perl-错误“每个参数的arg 1的类型必须是哈希(不是哈希元素)”

来自分类Dev

如何修复 perl 错误:每个 arg 1 的类型必须是散列(不是散列元素)

来自分类Dev

perl哈希引用返回:{'a'=> 1,%{sub()}}

来自分类Dev

错误:软件包:perl-Git-1.8.2.1-1.el5.x86_64(epel)要求:perl(:MODULE_COMPAT_5.8.8)

来自分类Dev

在Perl中访问哈希的问题

来自分类Dev

PostgreSQL数字字段溢出错误-精度为10,小数位数为1的字段必须舍入为小于10 ^ 9的绝对值

来自分类Dev

ValueError: 基数为 10 的 int() 的文字无效:'1 2 3 4 5'

来自分类Dev

解析Perl范围字符串,例如“ 1,4..7,10,11”

来自分类Dev

为什么JavaScript无法排序[5,10,1]?

来自分类Dev

了解“ 5 1”的类型

来自分类Dev

perl:将数据拆分为列,选择某些列,将列1加载为哈希键,将列2加载为哈希值

来自分类Dev

Perl:重置$ 1变量

来自分类Dev

错误:预期 conv3d_1_input 有 5 个维度,但得到了形状为 (10, 224, 224, 3) 的数组

来自分类Dev

meanSquaredError错误:形状10,1和10,2必须匹配(tensorflow.js)

来自分类Dev

如何在MATLAB中创建模式为[1 2 5 6 9 10 13 14 17 18 ....]的向量?

来自分类Dev

仅使用算术运算符将美元金额排序为20/10/5/1(无循环)

来自分类Dev

为 10 分钟窗口 + 5 分钟延迟缓冲区指定正确的触发仅产生 1 个结果

来自分类Dev

错误sh:1:读取:arg计数

来自分类Dev

在Perl哈希中计算字母的问题

来自分类Dev

GnuPlot错误:“格式必须具有类型为double的1-7转换”

来自分类Dev

Spinner错误“ Spinner适配器视图类型计数必须为1”

来自分类Dev

如何重复序列:r中的1,2,3,4,5,6,1,2,3,4,5,6,7,8,9,10,7,8,9,10

来自分类Dev

Perl哈希给出严格的引用错误

来自分类Dev

Perl哈希引用-是否可以将对嵌套哈希的引用放入1个变量中?

来自分类Dev

如何重置$ 1 perl变量?

来自分类Dev

选择第n个孩子选择1,2,5,6,9,10等

Related 相关文章

  1. 1

    Perl 5.10.1错误的问题arg 1的类型必须为哈希

  2. 2

    Perl数组引用并避免“键1的arg 1类型必须为哈希”错误

  3. 3

    Perl数组引用并避免“键1的arg 1类型必须为哈希”错误

  4. 4

    Perl-错误“每个参数的arg 1的类型必须是哈希(不是哈希元素)”

  5. 5

    如何修复 perl 错误:每个 arg 1 的类型必须是散列(不是散列元素)

  6. 6

    perl哈希引用返回:{'a'=> 1,%{sub()}}

  7. 7

    错误:软件包:perl-Git-1.8.2.1-1.el5.x86_64(epel)要求:perl(:MODULE_COMPAT_5.8.8)

  8. 8

    在Perl中访问哈希的问题

  9. 9

    PostgreSQL数字字段溢出错误-精度为10,小数位数为1的字段必须舍入为小于10 ^ 9的绝对值

  10. 10

    ValueError: 基数为 10 的 int() 的文字无效:'1 2 3 4 5'

  11. 11

    解析Perl范围字符串,例如“ 1,4..7,10,11”

  12. 12

    为什么JavaScript无法排序[5,10,1]?

  13. 13

    了解“ 5 1”的类型

  14. 14

    perl:将数据拆分为列,选择某些列,将列1加载为哈希键,将列2加载为哈希值

  15. 15

    Perl:重置$ 1变量

  16. 16

    错误:预期 conv3d_1_input 有 5 个维度,但得到了形状为 (10, 224, 224, 3) 的数组

  17. 17

    meanSquaredError错误:形状10,1和10,2必须匹配(tensorflow.js)

  18. 18

    如何在MATLAB中创建模式为[1 2 5 6 9 10 13 14 17 18 ....]的向量?

  19. 19

    仅使用算术运算符将美元金额排序为20/10/5/1(无循环)

  20. 20

    为 10 分钟窗口 + 5 分钟延迟缓冲区指定正确的触发仅产生 1 个结果

  21. 21

    错误sh:1:读取:arg计数

  22. 22

    在Perl哈希中计算字母的问题

  23. 23

    GnuPlot错误:“格式必须具有类型为double的1-7转换”

  24. 24

    Spinner错误“ Spinner适配器视图类型计数必须为1”

  25. 25

    如何重复序列:r中的1,2,3,4,5,6,1,2,3,4,5,6,7,8,9,10,7,8,9,10

  26. 26

    Perl哈希给出严格的引用错误

  27. 27

    Perl哈希引用-是否可以将对嵌套哈希的引用放入1个变量中?

  28. 28

    如何重置$ 1 perl变量?

  29. 29

    选择第n个孩子选择1,2,5,6,9,10等

热门标签

归档