in reply to forking/threads/running more than one command at once

You could try something like this.

#! perl -slw use strict; use threads; use threads::shared;; use LWP::Simple; use constant MAX_THREADS => 3; chomp( my @urls = <DATA> ); my %store :shared; my $threads :shared; for my $page ( @urls ) { async { $store{ $page } = get( 'http://' . $page ) or die "Failed to g +et $page"; print "Loaded $page"; } and $threads++; if( $threads > MAX_THREADS ) { if( my @joinable = threads->list(threads::joinable) ) { $_->join for @joinable; $threads -= @joinable; } else { sleep 1; } } } $_->join for threads->list; printf "Press enter to see the data gathered"; <STDIN>; print "*** $_ ***\n$store{ $_ }\n\n" for keys %store; __END__ www.yahoo.com www.microsoft.com www.bbc.co.uk www.ibm.com www.google.com www.bt.co.uk

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."