<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: 12pt">
<DIV>I think you answered the question yourself.</DIV>
<DIV> </DIV>
<DIV>Tie the filehandle to your package and in the PRINT handler do the 
open/print/close. The docs can be found here:</DIV>
<DIV><A 
href="http://perldoc.perl.org/perltie.html#Tying-FileHandles">http://perldoc.perl.org/perltie.html#Tying-FileHandles</A></DIV>
<DIV> </DIV>
<DIV>Here is an example:</DIV>
<DIV>tie *STDOUT, Shout;</DIV>
<DIV> </DIV>
<DIV>print "aaa\n";</DIV>
<DIV> </DIV>
<DIV>package Shout;<BR>sub TIEHANDLE { my $i; bless \$i, shift }</DIV>
<DIV> </DIV>
<DIV>sub PRINT { <BR>    my $fh;    
<BR>    open $fh, ">>out.txt";<BR>    $r = 
shift; $$r++; <BR>    print $fh @_;<BR>    close 
$fh;<BR>}<BR></DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV style="FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: 12pt">Indy 
Singh<BR>IndigoSTAR Software -- www.indigostar.com</DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">
<DIV style="FONT: 10pt tahoma">
<DIV> </DIV>
<DIV style="BACKGROUND: #f5f5f5">
<DIV style="font-color: black"><B>From:</B> <A title=fulko.hew@gmail.com 
href="mailto:fulko.hew@gmail.com">Fulko Hew</A> </DIV>
<DIV><B>Sent:</B> Friday, September 07, 2012 10:31 AM</DIV>
<DIV><B>To:</B> <A title=toronto-pm@pm.org 
href="mailto:toronto-pm@pm.org">TPM</A> </DIV>
<DIV><B>Subject:</B> [tpm] transparently detecting when a file goes 
missing</DIV></DIV></DIV>
<DIV> </DIV></DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none"><FONT 
face="courier new,monospace"><BR>Since the list has been quiet lately, I thought 
I'd ask the<BR>brilliant minds for a 
suggestion.<BR><BR><BR>...logging...<BR><BR>[ and yes I know about all the 
mega-logging frameworks, but ...]<BR><BR>To add simple logging simply, to my 
app, I decided to close and<BR>reopen STDOUT and STDERR pointing at a log file 
at the start of my app.<BR>This enables me to simply print and have stuff 
captured without<BR>having the overhead of a framework.<BR></FONT><BR><FONT 
face="courier new,monospace">close STDOUT; open STDOUT, ">>", "$filename"; 
STDOUT->autoflush(1);<BR>...<BR>print "log this\n";<BR><BR>This technique 
works great until someone/something comes along<BR>and (re)moves the log file 
out from under me (like logrotate).<BR>My logging is still happening, but to the 
original file, and not<BR>the 'new' (empty) file. Since I never re-open the 
file,<BR>my information isn't going where I expect it to.<BR><BR>If I 
open/write/close on every message it would work right,<BR>but then my simple 
approach of catching prints doesn't.<BR><BR>Is there some magic way to detect 
this occurrence and auto-reopen<BR>the 'new' file?<BR><BR>[Something like 
tie'ing to a handle's output functionality and<BR>so it could open/print/close 
everytime instead.]<BR><BR>TIA<BR>Fulko<BR><BR></FONT>
<P>
<HR>
_______________________________________________<BR>toronto-pm mailing 
list<BR>toronto-pm@pm.org<BR>http://mail.pm.org/mailman/listinfo/toronto-pm<BR></DIV></DIV></DIV></BODY></HTML>