2011-06-04 49 views
-1

错误“全局符号‘$ IPN’需要在perl.pl行明确包的名称66.全局符号‘$尺寸N’需要在perl.pl行明确包名76.执行perl.pl因编译错误而中止。“全局符号需要在perl脚本包名称错误

$iaddr = inet_aton("$ip") or die "Cannot resolve hostname $ipn"; 
$endtime = time() + ($time ? $time : 1000000); 
socket(flood, PF_INET, SOCK_DGRAM, 17); 

print "Flooding $ip " . ($port ? $port : "random") . " port with " . 
($size ? "$size-byte" : "random size") . " packets" . ($time ? " for $time seconds" : "") . "n"; 
print "Interpacket delay $delay msecn" if $delay; 
print "total IP bandwidth $bw kbpsn" if $bw; 
print "Break with Ctrl-Cn" unless $time; 

die "Invalid packet size requested: $sizen" if $size && ($size < 64 || $size > 1500); 
+2

您发布的代码没有'$ ipn'或'$ sizen'。确保你发布了正确的错误或正确的代码。并请提出问题。 – Mat 2011-06-04 09:10:20

回答

9

strict打开(这始终是一个好主意)。它在抱怨这些电话:

die "Cannot resolve hostname $ipn"; 
die "Invalid packet size requested: $sizen" 

因为你还没有声明的命名$ipn$sizen变量。您的意思是:

die "Cannot resolve hostname $ip\n"; 
die "Invalid packet size requested: $size\n" 

如果是这样,那么strict在做自己的工作,并抓住你的错误。您还有其他一些字符串以...n"结尾,可能应该是...\n",但由于这些字符串不是可变引用,所以strict不能说明存在问题。

+1

我猜他从一些破坏原代码的网络论坛获得了代码,在这种情况下,通过删除反斜杠。在其他没有导致语法错误的地方发生同样的事情也不是不可能的(或者至少违反了严格的规定)。 – bart 2011-06-04 22:19:18

相关问题