Thanks for the tip. That's good to know in general.
The way I ultimately solved the problem was to examine the requests generated by both Safari and Firefox. One important difference was that Firefox was sending a "Keep-Alive: 300" header, while Safari wasn't. This gave me the idea of modifying the redirection to
This worked.print redirect( -Location => self_url(), -Connection => 'close' );
But your suggestion of closing STDERR also works. I'll do both from now on, for good measure. :-)
the lowliest monk