even easier is using method autoflush directly.
Got it from HaukeX' recent post.
I should have read the FAQ: https://perldoc.perl.org/perlfaq5#How-do-I-flush/unbuffer-an-output-filehandle?-Why-must-I-do-this? more carefully :)
#!/usr/bin/perl
use strict;
use warnings;
use feature qw{ say };
unlink "./log.txt" or warn "$!";
open OUT, '>>', 'log.txt' or die $!;
if (0){ # as you like
my $previous_default = select(OUT); # save previous default
$|++; # autoflush OUT
select($previous_default); # restore previous default
} else {
#use PerlIO; # needed for Perl <5.14
OUT->autoflush();
}
print OUT "before close";
open IN, '<', 'log.txt' or die $!;
my $read;
$read = <IN>;
chomp $read;
say "Before close: <$read>";
close OUT;
-*- mode: compilation; default-directory: "d:/tmp/pm/" -*-
Compilation started at Fri Feb 12 02:23:56
C:/Perl_524/bin\perl.exe -w d:/tmp/pm/auto_flush.pl
Before close: <before close>
Compilation finished at Fri Feb 12 02:23:56
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|