in reply to Re: writing to logfile in a loop
in thread writing to logfile in a loop

That's needlessly complicated. LOG and $io? autoflush and other IO::Handle methods can be used on any file handle, including barewords. That means that only LOG is needed. Or better yet, a lexical var ($log).

use strict; use warnings; use IO::Handle; my $log_file = 'mylogfile.txt'; open my $log, '>>', $log_file or die "Unable to open log file \"$log_file\": $!\n"; STDOUT->autoflush(1); $log->autoflush(1); my $foo=0; while(1){ $foo++; printf "Iteration: %d\n",$foo; $log->printf("Looped in %d\n",$foo); # or printf $log ... sleep 2; }

I also

Replies are listed 'Best First'.
Re^3: writing to logfile in a loop
by blue_cowdawg (Monsignor) on Nov 21, 2006 at 22:26 UTC

    Actually, I tried just that prior to my post. It errored out on me. Possibly the version of Perl that was installed on my VMWare virtual machine is at fault. At any rate if it works for you, use it. If not, my solution is just as valid.

    Not sure I understand your comment about $| being cryptic. Seems like Perl 101 to me...


    Peter L. Berghold -- Unix Professional
    Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg

      I tried just that prior to my post. It errored out on me.

      Did you have IO::Handle loaded? Like I said earlier, IO::Handle needs to be loaded (even though $log isn't an IO::Handle).

      It works at least since 5.6.1.

      Not sure I understand your comment about $| being cryptic. Seems like Perl 101 to me...

      STDOUT->autoflush(1); is more accessible than $| = 1.