Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: Re: Re: has it been blessed?

by chipmunk (Parson)
on Mar 07, 2002 at 02:10 UTC ( [id://149913]=note: print w/replies, xml ) Need Help??


in reply to Re: Re: has it been blessed?
in thread has it been blessed?

Efficiency is nice, but there's something to be said for correctness as well. You've also forgotten REF, CODE, and LVALUE.

Comparing the return value from ref to a list of known types is simply the wrong approach. Either you'll forget something, or a new type will be added in a future version and your code will break.

Go with the UNIVERSAL::isa() approach. Really.

Replies are listed 'Best First'.
Re: Re: Re: Re: has it been blessed?
by rjray (Chaplain) on Mar 07, 2002 at 20:35 UTC

    I agree, but to clarify, the best approach would seem to be:

    if (ref($obj) and UNIVERSAL::isa($obj, 'UNIVERSAL')) { ... }

    Well, "best" in absence of the blessed primitive, of course...

    --rjray

      if (UNIVERSAL::isa($obj, 'UNIVERSAL')) { is more than enough. If it's not a reference, UNIVERSAL::isa() will return undef. Don't bother doing a check twice.

      ------
      We are the carpenters and bricklayers of the Information Age.

      Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.

        The reason I wrote it that way is that ref($obj) is a single-opcode operation, much less expensive than the execution of UNIVERSAL::isa($obj, 'UNIVERSAL'). Unless you know for certain that the value being tested will a reference the majority of the time, then you can save a reasonable amount of execution time with ref() coupled with the short-circuiting and operator. I stand behind this one.

        --rjray

        UNIVERSAL::isa($obj, 'UNIVERSAL') will also return true if $obj is the string 'UNIVERSAL', so the ref check is actually useful.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (6)
As of 2024-04-23 13:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found