most live apache configs do the right thing to fudge keep-alive in http 1.0 if possible, but sometimes it's not possible depending on some intricate factors.
and sometimes the overarching factor is that a CGI program automatically sends some headers (clues) to the web server or even the browser clues in on the content being CGI/dynamic and does certain things..ending up in connection closing.
i'd investigate the http1.0 kruft in apache docs, and maybe even try setting a multi-part header at the start in your perl script.
the hardest line to type correctly is: stty erase ^H