http://www.perlmonks.org?node_id=57528


in reply to open, sleep, & print together cause an error

Well, yes, if you are open to sleeping "together" and it ends up in print, well, it can cause more than an "error"... (:

Seriously though, $|++ only makes the currently selected output file handle non-buffering (STDOUT, by default). You can do the Perl4-ish thing (updated slightly to use my):

{ my $selected= select(LOG); $|++; # Unbuffer output to LOG select( $selected ); }

Or you can do:

require IO::Handle; LOG->autoflush(1);

which accomplishes the same thing.

        - tye (but my friends call me "Tye")

Replies are listed 'Best First'.
Re: (tye)Re: open, sleep, & print together cause an error
by zeno (Friar) on Feb 10, 2001 at 04:19 UTC

    tye, you are a smart, smart person. That worked. Here's what I ended up with:

    use strict; use warnings; require IO::Handle; # <--- new open LOG,">foo.log" or die "can't open foo.log: $!"; <b>LOG->autoflush(1);</b> # <--- new while(1) { print LOG (localtime).": something\n"; sleep(5); }

    Thanks a lot for your help, tye. -zeno