多个字符串解析循环

时间:2012-02-09 21:39:02

标签: perl

我目前有一些代码可以返回网站标题内容:

#!/usr/bin/perl 

use strict;
require IO::Socket; 

my @header; 
my $host = shift;

my $socket = new IO::Socket::INET(
    PeerAddr => $host, 
    PeerPort => 80, 
    Proto => 'tcp') || die "Could not Connect $!\n"; 

print "Connected.\n"; 
print "Getting Header\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";

我想做的是能够从打开的文件中读取(FILE,'&lt;',shift);然后文件中的每个IP都传入一个头部检索循环,这使我无法一个接一个地手动执行。

我的意思是在每行上都有一个包含(例子ips):1.1.1.1 2.2.2.2的文件,然后通过get头函数解析所有这些文件。

2 个答案:

答案 0 :(得分:1)

替换

my @header; 
my $host = shift;
...

while (<>) {
   chomp( my $host = $_ );
   my @header; 
   ...
}

答案 1 :(得分:1)

您只需打开文件,将内容读入列表,然后遍历列表:

open my $fh, '<', $file or die "$!";
my @ips = <$fh>;
close $fh;
foreach my $ip ( @ips ) {
   chomp $ip;
   ...
}