Look into nph scripts. (non-parsed header) Basically you
get to bypass the webserver (and it's output buffering)
and talk directly to the browser via the cgi. The also
permits real-time display output to be sent to the browser.
We have used it for search engine indexing of sites before
(indexes have taken as long as 10 minutes.)
I'm not totally sure of the details, but as
long as you periodically return data the connection
should be held open. IIRC you need a nph script to
do this. Try returning a "." every so often. (This
also lets the user know something is happening).
Look in the CGI.pm docs for the section titled "USING NPH SCRIPTS"
http://search.cpan.org/doc/LDS/CGI.pm-2.68/CGI.pm