did you try select on LOG before forcing autoflush ($|++;)?
UPDATE : Forget this post, I took too much time to submit this one. And the question was answered during the looooong time I took to check my answer. :-(
Comment on Re: open, sleep, & print together cause an error
Hi arhuman, this code ended up working, too. Now I have a couple of alternatives!:
use strict;
use warnings;
open LOG,">foo.log" or die "can't open foo.log: $!";
my $selected = select(LOG);
$|++;
select($selected);
while(1) {
print LOG (localtime).": something\n";
sleep(5);
}