#!/usr/bin/perl -w
$| = 1;
use LWP::UserAgent;
use LWP::ConnCache;
use threads ('yield',
'stack_size' => 8*4096,
'exit' => 'threads_only',
'stringify');
my $threads = 5;
open(F,"< proxy.txt");
@f=<F>;
chomp(@f);
close(F);
threads->new(\&main) for 1 .. $threads;
$_->join for threads->list;
sub main
{
$i = 1;
while ($i<3) {
$ip = splice(@f, int rand @f, 1);
my $ua = LWP::UserAgent->new;
$ua->conn_cache(LWP::ConnCache->new());
$ua->agent('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)');
$ua->timeout(10);
$ua->proxy('http' => "http://$ip");
$ua->default_header('Accept-Encoding' => "gzip, deflate");
$ua->default_header('Accept-Language' => "ru");
$ua->default_header('Referer' => "http://yandex.ru//");
$ua->default_header('Accept' => "*/*");
$ua->default_header('Accept-Charset' => "windows-1251");
$response = $ua->get('http://google.ru/);
sleep (60);
redo;
++$i;
}
}
Вот какая проблема терзает мой разум. В коде, что приведен выше, парсера, прокси выбираются из списка рандомно. Т.е., если в списке штук 5 прокси, то велика вероятность того, что один и тот же прокси будет использован несколько раз. А хочется вот как, чтобы прокси выбирались из списка по порядку, сначала первый, потом второй, потом третий и в конце скрипт завершает работу.
Думаю сделать вот как, присвоить переменной значение 1, потом с каждый разом увеличивать это значение, но реализовать как-то не получается, прошу помочь безголовому