The big problem was browser timeout, which had not solved itself by just printing dots. I do dots a lot, maybe spaces that don't display would be good. For some reason I remember thinking the browser was timing out even with the dots being printed, but obviously the process must have just taken too long.
I had looked at IO::Tee (output to multiple handles) but I guess the answer is really just a fork as shotgunefx suggested. The Perl program directs the spidering and indexing of many websites into separate databases, so I would fork a child for each site, then have the child return a success code on finishing its work. I suppose this would even run more quickly with many children in parallel but I think I'll keep it serial for now to keep the log file readable.
Thanks. I guess I was a little *too* lazy a perl programmer.