http://qs321.pair.com?node_id=663227


in reply to flushing by default

I am interested in how I can make autoflush a default behaviour for all of the filehandles I open

Put this somewhere at the beginning of your program:

$|++;

Setting $| to a non-zero value forces a flush right away and after every write or print on the currently selected output channel. IO::Handle makes use of $| as well.

-- Kirill

Replies are listed 'Best First'.
Re^2: flushing by default
by hungry_john (Acolyte) on Jan 19, 2008 at 18:28 UTC
    Setting $| to a non zero value will force a fflush()
    to be called on the currently selected output channel.

    Use setbuf to remove the buffer on a single file descriptor.
Re^2: flushing by default
by spx2 (Deacon) on Jan 19, 2008 at 17:54 UTC
    yes,but won't this apply just to the handle STDOUT ? will it apply to all handles ?

      Not necessarily on STDOUT, but on the filehandle that is currently selected.

      As for the global default autoflush - I'm not aware of a way to do it. Buffering is usually the default behaviour for the reasons of efficiency.