为什么可以';在Perl中,我给散列项分配一个变量吗?
对不起,我对Perl非常生疏。请参阅以下代码:为什么可以';在Perl中,我给散列项分配一个变量吗?,perl,Perl,对不起,我对Perl非常生疏。请参阅以下代码: 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{$ha
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];
$t = $greylist{$hash};
print $t[4];
但是当您这样做时:
print $greylist{$hash}[4];
$t = $greylist{$hash};
print $t[4];
将数组引用分配给标量变量
$t
,然后尝试访问另一个变量@t
的第5个元素<代码>使用严格的在这种情况下会给您一个错误
使用,->
,取消引用:
$t = $greylist{$hash};
print $t->[4];
请注意:
如果$aref
持有对数组的引用,则$aref->[3]
是数组的第四个元素。不要将其与$aref[3]
混淆,后者是一个完全不同的数组的第四个元素,一个冒名为@aref
$aref
和@aref
与$item
和@item
是不相关的
use strict
会告诉您错误所在。始终严格使用;使用警告代码>位于每个Perl程序的顶部。