Hi all,

Here's a simple question I should probably already know the answer to but I
don't and the documentation thus far has not been useful.  How can I tell
if a given filehandle is open?

You can't test the handle itself because if it's not open yet the compiler
complains about a bareword.

        This doesn't work:
        ---------------------
        print "Can test: ", (LOGFILE ? "true" : "FALSE" ), "\n";

I thought maybe one of the -X operators could let you ping the state of the
filehandle but if it's not open they fail with an error:

        Code:
        -------
        my $filename = "junk.txt";
        #print "Can test: ", (LOGFILE ? "true" : "FALSE" ), "\n";
        print "Can read: ", (-r LOGFILE ? "true" : "FALSE" ), "\n";
        print "Can write: ", (-w LOGFILE ? "true" : "FALSE" ), "\n";
        open( LOGFILE, ">$filename" ) or die "Error: can't open '$filename' for
writing.\n";
        #print "Can test: ", (LOGFILE ? "true" : "FALSE" ), "\n";
        print "Can read: ", (-r LOGFILE ? "true" : "FALSE" ), "\n";
        print "Can write: ", (-w LOGFILE ? "true" : "FALSE" ), "\n";

        Result:
        --------
        [ ignore differences in reported line numbers ]
        -r on unopened filehandle LOGFILE at perlt\testdasha.pl line 12. 
        Can read: FALSE
        -w on unopened filehandle LOGFILE at perlt\testdasha.pl line 13.
        Can write: FALSE
        Can read: true
        Can write: true

This suggests doing it in an eval (so the error message gets trapped) and
testing the result, but that seems like a complicated solution for a simple
problem.  Can anyone suggest a better way?

Thanks very much in advance.

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to