use LWP::Parallel; use HTTP::Request; my %Engines = ) google => { url=>'qqq', parse => sub {},}, av => { url=>'zzz', parse => sub {},}, ) my $pua = LWP::Parallel::UserAgent->new(); $pua->register($_->{url}, $_->{parse}) for values %Engines; $pua->wait(); # at this point you have all pages fetched and filtered thru parse subs