Forked HTTP requests
examples/forks/ForkedHTTP.pm
package ForkedHTTP; use strict; use warnings; use Parallel::ForkManager; use lib '.'; use Task; sub get_titles { my ($parallels, @urls) = @_; my %results; my $pm = Parallel::ForkManager->new($parallels); $pm->run_on_finish( sub { my ($pid, $exit_code, $ident, $exit_signal, $core_dump, $data_structure_reference) = @_; my $url = $data_structure_reference->{url}; $results{$url} = $data_structure_reference->{title}; }); foreach my $url (@urls) { my $pid = $pm->start and next; print "PID $$\n"; my $title = Task::get_title($url); $pm->finish(0, {url => $url, title => $title}); } $pm->wait_all_children; return %results; } 1;