這是我當前的代碼:標值誤差(與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