Я пытаюсь создать асинхронный клиент запрос HTTP, используя следующий исходный код:Почему объект URI не может найти метод «схема»?
#!perl
use URI;
use DDP;
use threads;
use Thread::Queue;
use LWP::UserAgent;
use constant NUM_WORKERS => 25;
my $req_q = Thread::Queue->new();
my $res_q = Thread::Queue->new();
my @urls = ("http://google.com", "http://web.de");
my @workers;
for (1 .. NUM_WORKERS) {
push @workers, async {
my $ua = LWP::UserAgent->new();
while (my $req = $req_q->dequeue()) {
$res_q->enqueue($ua->request($req));
}
};
}
for my $url (@urls) {
$req_q->enqueue(HTTP::Request->new(GET => $url));
}
$req_q->enqueue(undef) for @workers;
for (1 .. @urls) {
my $res = $res_q->dequeue();
p $res;
}
$_->join() for @workers;
К сожалению, я получаю сообщение об ошибке:
400 Can't locate object method "scheme" via package "URI::http"
Это должно быть проблемой URI
модуль, но если я использую URI-пакет в других скриптах работает нормально.
Я попытался обновить URI до URI-1.64 (обновлен от 1.60), протестирован на Fedora (x86_64 GNU/Linux) perl 5.16 и на ubuntu (i686 athlon i386 GNU/Linux) perl 5.14.
например$perl -MURI -E'say $INC{"URI.pm"}; say URI->VERSION; say URI->new("http://www.google.com/")->scheme'
$/home/xxxxx/perl5/lib/perl5/URI.pm
$1.64
$http
Любая идея, что было бы наилучшим способом для устранения неполадок?
Сообщение об ошибке разочаровывает. Есть ли еще? –
400 выход -> это все – ovntatar
Какая версия LWP? – ysth