Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

(tye)Re: passing hashes and hash reference

by tye (Sage)
on Apr 20, 2001 at 21:19 UTC ( [id://74238]=note: print w/replies, xml ) Need Help??


in reply to Re: passing hashes and hash reference
in thread passing hashes and hash reference

"HASH" eq ref($ref) is a fragile test and should be replaced with UNIVERSAL::isa($ref,"HASH").

Update: The reason the original test is fragile is that it will make your code refuse to work on a hash if it happens to be blessed.

Update2: Changed "HASH" eq ref to "HASH" eq ref($ref) to avoid confusion. Thanks, BMaximus.

        - tye (but my friends call me "Tye")

Replies are listed 'Best First'.
Re: (tye)Re: passing hashes and hash reference
by BMaximus (Chaplain) on Apr 20, 2001 at 21:35 UTC
    Shouldn't that be: ref($hash) eq "HASH" ?
    Where $hash is a hashref?

    How about a bit more on why the UNIVERSAL::isa() method is better? I'm curious.

    BMaximus
Re^2: passing hashes and hash reference
by tadman (Prior) on Apr 20, 2001 at 21:56 UTC
    How about:
    sub rref { return UNIVERSAL::isa(@_); } if (rref($hash_ref,'HASH')) { # Wow! It's a hash! }
    UNIVERSAL is such a wacky thing. It's exactly the kind of direction that I would expect Parrot to take, but only if somehow Java were involved.
      *isa= \&UNIVERSAL::isa; if( isa($ref,"HASH") ) {

      works for me. (:

              - tye (but my friends call me "Tye")

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (4)
As of 2025-07-14 11:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.