Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: Determining indirect filehandles

by chipmunk (Parson)
on Jan 23, 2002 at 10:02 UTC ( #140839=note: print w/replies, xml ) Need Help??


in reply to Determining indirect filehandles

Hmm, this doesn't seem to be working for me in all cases.

When $fh is a filehandle opened on something like a pipe, on which one cannot seek, the seek fails so it seems as if $fh is not a filehandle. $! holds the reason ("Illegal seek"), and $@ is empty.

If $fh holds a number or a string, the seek fails, but does not die, so again $! holds the reason ("Bad file number") and $@ is empty.

If $fh holds a reference to a something other than a glob or filehandle object, the seek does die, and $@ holds "Not a GLOB reference...", as intended.

I'm not sure how one would distinguish easily between the first two cases, other than by examining $!, which wouldn't be portable.

Replies are listed 'Best First'.
Re: Re: Determining indirect filehandles
by Masem (Monsignor) on Jan 23, 2002 at 19:44 UTC
    Gah, you're right. I didn't test the seek solution with any pipes, and while I did test things like array refs, I didn't test it with scalars directly (mostly because in the app that I want this for, I've already removed scalars from the possible values this snippet would have gotten). However, looking around, it does look like fileno does the trick; pipes are properly recognized, but anything that's not a filehandle triggers a warning. So eval'ing that away captures non-filehandles correctly - at least, as best as I can tell. Snippet above has been updated to reflect this.

    -----------------------------------------------------
    Dr. Michael K. Neylon - mneylon-pm@masemware.com || "You've left the lens cap of your mind on again, Pinky" - The Brain
    "I can see my house from here!"
    It's not what you know, but knowing how to find it if you don't know that's important

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://140839]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2020-01-28 07:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Notices?