in reply to Threading

What I would do is put the $q->dequeue; down in the get_url subroutine;
such that:
sub get_url { my $url = $q->dequeue); get($url); print "Retrieved $url\n"; }
I'm using threads to act similar to a select or fileevent
in Perl/Tk to monitor log files so I'm in the same
boat you are in trying to learn some more about Perl Threads
But I would look into your join code and see what you can see.
Is the script holding up at Thread creation or joining?