Разбор нескольких строк в цикле - PullRequest
1 голос
/ 10 февраля 2012

У меня сейчас есть код, который возвращает содержимое заголовка сайта:

#!/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, '<', shift); а затем каждый IP-адрес в файле для передачи в цикл извлечения заголовка, что избавляет меня от ручного выполнения одного за другим. </p>

То, что я имею в виду, это иметь файл, содержащий (пример ips): 1.1.1.1 2.2.2.2 в каждой строке, а затем анализировать их все с помощью функции get header.

Ответы [ 2 ]

1 голос
/ 10 февраля 2012

Вы просто откроете свой файл, прочитаете содержимое в списке, а затем выполните итерации по списку:

open my $fh, '<', $file or die "$!";
my @ips = <$fh>;
close $fh;
foreach my $ip ( @ips ) {
   chomp $ip;
   ...
}
1 голос
/ 10 февраля 2012

Заменить

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

на

while (<>) {
   chomp( my $host = $_ );
   my @header; 
   ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...