It's not the tool; it's the structure. If you have to wait for each site to respond before doing a GET on the next site it's going to take forever. You need a way to issue a block of GETs, forking a child to handle each issue, then process the ones that respond, and issue new GETs as processes are freed up. Perhaps read perlipc. There are some good tools out there to make this kind of thing more robust ( if not less painfull ), see: POE
Update: I'm wrong, the module you want is LWP::Parallel as grinder points out. The module documentation even provides the code you want.
s//----->\t/;$~="JAPH";s//\r<$~~/;{s|~$~-|-~$~|||s
|-$~~|$~~-|||s,<$~~,<~$~,,s,~$~>,$~~>,,
$|=1,select$,,$,,$,,1e-1;print;redo}