From:                   "Anette Seiler" <[EMAIL PROTECTED]>
> I am a newbie in Perl. My boss (who isn't a newbie) has given me one
> of his programs. I am now trying to understand this program.
> 
> Right in the beginning it says:
> 
> $| = 1; # flush output after each write or print
> 
> What does it mean?

It does exactly what the comment says. It flushes the output after 
each write or print :-)

Serious ... normaly when you write into a filehandle the data are 
not written to the disk or sent over the socket immediately. It's just 
put into a buffer and saved when the buffed is full (or under several 
other circumstances, like when you close the file or flush the 
filehandle).

While this is more efficient, sometimes you need to actualy 
save/send the data immediately ... for example because you intend 
to wait for a reply. Thus you may either flush the filehandle after 
each print or write statement or turn off the buffering for the 
filehandle. 

The $| is a bit crazy way to do it actually. IMHO it should not be 
used anymore. It turns off the buffering for currently selected 
filehandle (the one into which you print if you do not specify a 
filehandle : ' print "Hello World!\n"; '. By default STDOUT).

IMHO it's much cleaner and easier to understand if you use

        use FileHandle;
        STDOUT->autoflush();

This also prevents having to play with select() if you need to 
autoflush a non-default filehandle.

HTH, Jenda

=========== [EMAIL PROTECTED] == http://Jenda.Krynicky.cz ==========
There is a reason for living. There must be. I've seen it somewhere.
It's just that in the mess on my table ... and in my brain.
I can't find it.
                                        --- me

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to