in reply to What the heck does $|++; do?
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!