#!/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;