#!/usr/bin/env perl use strict; use warnings; use threads; use threads::shared; use Thread::Queue; use LWP::UserAgent; my $agent = LWP::UserAgent->new(); my $count = shift || 4; my $queue = Thread::Queue->new(); my @workers; for ( 1 .. $count ) { push @workers, threads->create( sub { while ( my $task = $queue->dequeue() ) { warn $task; my $res = $agent->get($task); print $res->content; } } ); } while ( <> ) { chomp; $queue->enqueue( $_ ); } $queue->enqueue( undef ) for 1 .. $count; $_->join() for @workers;