抱歉,我对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/