develooper Front page | perl.perl5.porters | Postings from May 2012

print() on closed filehandle with “Bad File Descriptor”

Thread Next
From:
david b
Date:
May 6, 2012 16:41
Subject:
print() on closed filehandle with “Bad File Descriptor”
Message ID:
SNT134-W2624E0500D6067F255BE95F0120@phx.gbl

I have a tcp server in perl (revision 5.0 version 8 subversion 0) which use this subroutine to log in a file.



sub logger {

        return if ($LOGFILE eq "") ;

        my ($idt, $str) = @_ ;

        unless( defined($str) ) {

                $str = $idt ;

                $idt = '' ;

        }

        my ($s,$m,$h,$J,$M,$A) = localtime(time()) ;

        if(!open(OUT,">>$LOGFILE"))

        {

                warn "logger:error open [$LOGFILE]:[$!]\n";

                return;

        }

        if (!printf OUT "%4.4d/%2.2d/%2.2d %2.2d:%2.2d:%2.2d %s %s -> %s\n",

                      $A+1900, $M+1, $J, $h, $m, $s, $idt, $HOSTNAME, $str)

        {

                warn "logger:error print [$LOGFILE]:[$!]\n";

                return;

        }

        if (!close(OUT))

        {

                warn "logger:error close [$LOGFILE]:[$!]\n";

                return;

        }

}



So there is simultaneous writing in this log file. Exceptionally , I have this error in STDERR:



    printf() on closed filehandle

    logger :error print [/my/path/logFile.LOG]:[Bad File Descriptor]



without any error on open!



How can I resolve this problem? 
Thanks for your help!!! 		 	   		   		 	   		   		 	   		   		 	   		  
Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About