全局符号需要perl脚本中的包名称错误

时间:2011-06-04 09:01:32

标签: perl

错误“全局符号”$ ipn“需要在perl.pl第66行显式包名。全局符号”$ sizen“需要在perl.pl第76行显式包名。由于编译错误,perl.pl的执行中止。“

$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);

1 个答案:

答案 0 :(得分: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无法判断是否存在问题。