这是我当前的代码:标值误差(与IO ::插座)
#!/usr/bin/perl -w
use strict;
require IO::Socket;
while (<>) {
chomp(my $host = $_);
my @header;
print "Connecting to: $host\n";
my $socket = new IO::Socket::INET(
PeerAddr => $host,
PeerPort => 80,
Proto => 'tcp') || print "Could not connect: $!\n";
print "Connected.\n";
print $socket "GET/HTTP/1.0\n\n";
my $i = 0;
while (<$socket>) {
@header[$i] = $_;
$i++;
}
$i = 0;
print "--------------------------------------\n";
while ($i <= 8) {
print "@header[$i++]";
}
print "-------------------------------------\n";
print "Finished $host\n\n";
}
如果要同时通过IP的列表,以及主机关闭,而不是继续到下一个IP,它会给我一个错误“在使用”strict refs“时,不能使用字符串(”1“)作为符号ref。
如果我再改变@header [$ i] = $ ;到$ header [$ i] = $;我也得到同样的错误。我怎样才能使这个脚本更好。
什么行导致错误?另外,如果将'$ socket'作为新的'IO :: Socket :: INET'对象的创建不成功,你应该或者'死掉'或者移动到下一个参数。 – 2012-02-10 00:33:47
@header [$ i]'不正确,即使将它改为正确的东西也不能解决错误。 – geoffspear 2012-02-10 00:35:22
@Wooble - 很好。为什么总是应该启用'warnings'编译指示的另一个原因。 – 2012-02-10 00:38:08