Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > Net::HTTP - чекать списки урлов


Автор: DiverD 15.3.2006, 01:35
Код

#!/usr/bin/perl 
use Net::HTTP;
@array = qw(forum.vingrad.ru perl.org google.com perl.org.ua mail.ru);
print "@array";
foreach $u (@array) {
my $s = Net::HTTP->new(Host => "$u");
$s->write_request(GET => "/index.php", 'User-Agent' => "Mazilla 1.7.2");
my @r = $s->read_response_headers;
while (1) {
my $buf;
my $n = $s->read_entity_body($buf, 1024);
die $! unless defined $n;
last unless $n;
if ($buf=~/perl/i) {
print "$u : OK\n";
last;
}
}
}


короче здесь ни фига не чекаятся урлы из массива,а вот если без цикла то работает с одним урлом вмсето переменной $u.
что делать.
мне нада что скрипт чекал все урлы и выводил резулт!

в чем моя ошибка???

Автор: nitr 15.3.2006, 02:55
Простейший код:
Код

#!/usr/bin/perl
use LWP::UserAgent;
my @array = qw(forum.vingrad.ru perl.org google.com perl.org.ua mail.ru);
#my @array = ('forum.vingrad.ru', 'perl.org', 'google.com', 'perl.org.ua', 'mail.ru'); :)
foreach my $u (@array) {
  my $ua = LWP::UserAgent->new() || die $@;
  my $response = $ua->get('http://'.$u.'/index.php');
  my $content = $response->content;
  if ($content=~/perl/gi) {
    print "$u : OK\n";
  }
}


perldoc LWP::UserAgent
perldoc LWP::Simple

Автор: DiverD 15.3.2006, 14:34
nitr
спасибо - работает.
но помоги мне именно с Net::HTTP мне простп интересно почему он не пашет если передавать переменную в теле цикла? вчера долбался весь день и без результата - весь гугл обрыл

Автор: BlackLFL 15.3.2006, 15:50
Код

#!/usr/bin/perl
use strict;
use warnings;
use Net::HTTP;

use CGI::Carp qw(fatalsToBrowser); # For debuging
print "Content-type: text/plain\n\n";


my @array = qw( forum.vingrad.ru perl.org google.com perl.org.ua mail.ru );
#print "@array";

foreach my $u ( @array ) {
    print "\n$u: ";
    
    my $s = Net::HTTP->new(Host => "$u");
    $s->write_request(GET => "/index.php", 'User-Agent' => "Mazilla 1.7.2");
    my @r = $s->read_response_headers;
    while (1) {
        my $buf;
        my $n = $s->read_entity_body($buf, 1024);
        
        die $! unless defined $n;
        last unless $n;
        
        if ( $buf =~ /perl/i ) {
            print "OK";
            last;
        }
    }
}

1;

Результат:
Цитата

forum.vingrad.ru: OK
perl.org:
google.com:
perl.org.ua: OK
mail.ru:


версия Net::HTTP
# $Id: HTTP.pm,v 1.44 2004/04/09 15:07:04 gisle Exp $
$VERSION = "1.00";

Автор: DiverD 15.3.2006, 21:04
BlackLFL спасиб.

oбъясни что да как пожалуйсто,что та я отличия не нахожу=)

Автор: BlackLFL 15.3.2006, 21:15
diverd, заработало?

Автор: DiverD 15.3.2006, 21:19
BlackLFL

да. но шо за фигня код вроде одинаков

Автор: BlackLFL 15.3.2006, 21:25
магия smile

p.s. используй всегда
Код

use strict;
use warnings;

и делай хотя бы минимальный отступ между блоками скрипта ...

Автор: DiverD 15.3.2006, 23:39
BlackLFL

да у меня эта стаяло и всегда использую ибо мне Шарк приказал=)
а может интапритатор глючить???

This is perl, v5.8.7 built for i386-freebsd-64int


Автор: sharq 16.3.2006, 12:13
diverd,
Цитата(diverd @ 16.3.2006, 00:39 Найти цитируемый пост)
а может интапритатор глючить???

smile
ага, на кого еще скинуть как не на интерпретатор!

smile

Автор: sharq 16.3.2006, 12:36
Кстати, появился свежий релиз интерпретатора от ActiveState - 5.8.8.816, http://www.activestate.com/Products/ActivePerl/.
Новость читаем http://forum.vingrad.ru/index.php?showtopic=87683.

smile

Автор: nitr 16.3.2006, 14:54
Намана =) уже качал, глюки с Crypt::SSLeay =) возникли дополнительные, перекомпиляции не подлежит, качаем готовый ppm! Этим исправим глюк smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)