sectokia has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks,

I have list of async jobs that need to happen one after the other. I can do that as per example below. However it has a deep recursion problem that limits the size of the queue. Also it has to store all the async instances (in this example in @times) which is silly as only 1 is really active at a time.

What would be the correct way to do this without recurssion?


use AnyEvent; my @queue = (9,8,7,6,5,4,3,2,1); my @timers; my $cv = AnyEvent->condvar; DoQueue(); # Do other things here... $cv->recv; sub DoQueue { my $i = pop @queue; if (!defined $i) { $cv->send; return; } print "Starting async operation $i\n"; $timers[$i] = AnyEvent->timer(after => 1, interval => 0, cb => sub + { print "Finish async operation $i\n"; DoQueue(); }); }