LINUX.ORG.RU

[Perl] Anyevent::HTTP


0

1

Пытаюсь заюзать AnyEvent::HTTP но уперся в один момент. Есть код:

use AnyEvent::HTTP;

for $id(1..10){
    http_get "http://www.myhost.ru/?id=$id", sub { print "ID:???\n" };
}

каким образом мне можно передать собственные параметры в колбэк? т.е. в данном примере я хочу вывести ID запроса который обработался. Т.к. запросы идут во много потоков, то просто взять внешнюю переменную не получиться..

есть идеи?

в кукисах передавай %)

arsi ★★★★★
()

попробуй примерно такой костыль:

sub callback {
	my ($id, $data, $headers) = @_;
	print "ID:$id\n";
}

for my $id(1..10) {
    http_get "http://www.myhost.ru/?id=$id", eval "sub { callback($id,\@_) }";
}
arsi ★★★★★
()
Ответ на: комментарий от arsi

Да такой варивнт обдумывал,вариант уж сильно костыльный. Ну если ничего не придумаю буду так делать. спасибо

St_Junker
() автор топика

перл знаю слабо, но уверен, что если правильно объявить переменную внутри for, то она захватится замыканием sub, и соответственно в каждом вызове будет своя

www_linux_org_ru ★★★★★
()

Поубивал бы.

#!/usr/bin/env perl
use strict;
use warnings;

use AnyEvent;
use AnyEvent::HTTP;

my $cv = AnyEvent->condvar;

for my $id(1..10){
    http_get "http://www.myhost.ru/?id=$id", sub { print "ID:$id\n" };
}

$cv->recv;

iSage ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.