Yes, that's what is happening, but it's not supposed to work that way. I have seem too many scripts that can show in real time everything, including an example like mine; but i've seen them in other servers, working.
For example: there's a site, www.cgi101.com, where they have all the online examples of the book cgi101. One of those examples is a ping script. I don't know why, but they disabled the working example, but when it was working, it showed the ping process in real time (about one ping line per second). I tried the exact script on my system, and my system doesn't show anything until the script finishes all the ping process.
Another example, is one that you can find at http://install.xav.com/?p=genesis . This script is designed to autoinstall a perl file managing system in your own server via FTP. It asks you for a username and password for your FTP, and it starts installing the files. While it's working, you can see in realtime all the FTP process, like if you were using telnet.
Another example, is the Visual Package Manager that comes with Perl Dev Kit from ActiveState. It starts some kind of server in a different port (not 80) and opens your browser to search for Perl Modules. When you select a perl module to install, you can see the progress in realtime, like if you were using command line (DOS).
Ok, i've looked at several Perl documentation sites, and everyone says that for web scripts, you can acomplish this behavior by setting $|=1. Now, by looking at my router leds, i could see that the web server isn't sending a realtime response; it waits for the script to be finished to render the page. So, i went to the Apache documentation site. I found that since version 3 of Apache, if any CGI script has turned off buffering, Apache will return the script in realtime. That's all i could find in Apache's site.
So, as you can see, there's a way to send realtime responses to the browser. Now, the question is... HOW?!?