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中的HASH ref错误_Perl - Fatal编程技术网

获取Perl中的HASH ref错误

获取Perl中的HASH ref错误,perl,Perl,我试图理解为什么在一种情况下会出现HASH-ref错误,而不是在另一种情况下。错误:在./a.pl第351行使用“strict refs”时,不能将字符串(“1”)用作哈希引用。由指示的错误行出现此错误的原因是因为以下表达式: $ips_per_host{$host}{$ip} 返回数字1。这是存储在$sort\u total{$count}中的一件非常好的事情,您可以这样做 问题是,然后您尝试将内容放入$sort\u total{$count}{'host'} 当您使用嵌套数据结构时,Per

我试图理解为什么在一种情况下会出现HASH-ref错误,而不是在另一种情况下。错误:在./a.pl第351行使用“strict refs”时,不能将字符串(“1”)用作哈希引用。由指示的错误行出现此错误的原因是因为以下表达式:

$ips_per_host{$host}{$ip}
返回数字
1
。这是存储在
$sort\u total{$count}
中的一件非常好的事情,您可以这样做

问题是,然后您尝试将内容放入
$sort\u total{$count}{'host'}

当您使用嵌套数据结构时,Perl将尝试“自动激活”(使其存在)嵌套对象所需的结构层。所以Perl检查
$sort\u total{$count}
是否存在,它确实存在。然后检查该值是否是对另一个散列的引用,因为表达式有两级散列。但事实并非如此;它已设置为值
1
。如果Perl在那里自动激活散列引用,它将删除您已经存储的内容,这可能不是您想要的。因此,Perl退出时会出现一个错误,假设您希望更正此错误,而不是覆盖数据

所以有几个选择

  • 如果
    $ips\u per_host{$host}{$ip}
    实际上应该返回一个hashref而不是一个数字,那么这是一个bug,所以请修复它

  • 如果
    $ips\u per_host{$host}{$ip}
    确实应该是一个数字,那么将其分配给要使用的哈希中的一个键,例如
    $sort\u total{$count}{per_host}=$ips\u per_host{$host}{$ip}

  • 像现在这样使用两个单独的散列


  • 出现此错误的原因是以下表达式:

    $ips_per_host{$host}{$ip}
    
    返回数字
    1
    。这是存储在
    $sort\u total{$count}
    中的一件非常好的事情,您可以这样做

    问题是,然后您尝试将内容放入
    $sort\u total{$count}{'host'}

    当您使用嵌套数据结构时,Perl将尝试“自动激活”(使其存在)嵌套对象所需的结构层。所以Perl检查
    $sort\u total{$count}
    是否存在,它确实存在。然后检查该值是否是对另一个散列的引用,因为表达式有两级散列。但事实并非如此;它已设置为值
    1
    。如果Perl在那里自动激活散列引用,它将删除您已经存储的内容,这可能不是您想要的。因此,Perl退出时会出现一个错误,假设您希望更正此错误,而不是覆盖数据

    所以有几个选择

  • 如果
    $ips\u per_host{$host}{$ip}
    实际上应该返回一个hashref而不是一个数字,那么这是一个bug,所以请修复它

  • 如果
    $ips\u per_host{$host}{$ip}
    确实应该是一个数字,那么将其分配给要使用的哈希中的一个键,例如
    $sort\u total{$count}{per_host}=$ips\u per_host{$host}{$ip}

  • 像现在这样使用两个单独的散列

  • $ips_per_host{$host}{$ip}