And to respond to 'Why?' .. sometimes a script takes a while to complete, and in some cases you don't care if the output comes out all in the end or in dribs and drabs.

Sometimes (often, in the case of CGI scripts), you are willing to trade off the efficiencies of caching the output until you have a buffer full, with getting the output stream as the script emits it, in real-time.

For a CGI script, you might want to output the HTTP header and the first chunk of the web page while some complicated and lengthy operation happens on the server. This is reassuring to the browser (and the user who is watching the browser) because they can see that *something* is happening. That's unbuffered output ($| == 1).

If a CGI script is buffered ($| == 0, the default), nothing may happen on the browser until the script completes, and this could be frustrating for the user watching the browser.

Alex / talexb / Toronto

Life is short: get busy!

In reply to Re: What the heck does $|++; do? .. and why? by talexb
in thread What the heck does $|++; do? by Anonymous Monk

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":