抱歉,我对Perl感到非常使用rust 。请参见以下代码:

foreach my $hash (keys %greylist)
{
  $t = $greylist{$hash};
  print $greylist{$hash}[4] . "\n";
  print $t[4] . "\n";
}

为什么$t[4]评估为空字符串,而$greylist{$hash}[4]应该是相同的东西评估为IP地址?

最佳答案

$greylist{$hash}包含一个数组引用。当您这样做时:

print $greylist{$hash}[4];

Perl automatically treats it as an array reference,但是当您这样做时:
$t = $greylist{$hash};
print $t[4];

您正在将数组引用分配给标量变量$t,然后尝试访问另一个变量@t的第5个元素。在这种情况下,use strict将给您一个错误。

使用the arrow operator->取消引用:
$t = $greylist{$hash};
print $t->[4];

perlreftut 对此有一个注释:

关于perl - 为什么不能在Perl中将变量分配给哈希条目?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24848795/

10-11 23:10