http://qs321.pair.com?node_id=150122


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

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.

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

    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

      That's a fair statement. It's always good to be efficient whenever it doesn't hurt readability. However, if you're optimizing for speed over readability, I feel that you're going to have problems.

      ------
      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.

Re: Re: Re: Re: Re: Re: has it been blessed?
by chipmunk (Parson) on Mar 08, 2002 at 05:21 UTC
    UNIVERSAL::isa($obj, 'UNIVERSAL') will also return true if $obj is the string 'UNIVERSAL', so the ref check is actually useful.