my @requests; while ( ... ) { push @requests, ...; if (scalar @requests % 3 == 0) { &doRequests(\@requests); } } sub doRequests { my $requests = shift; my @coro = map { async { # here we get LWP::UserAgent object and to request } } @$requests; }