* Adam Kennedy <[EMAIL PROTECTED]> [2006-04-07 13:25]:
> Just because I (repeatedly) attack chromatic over
> UNIVERSAL::isa/can nobody should be under the impression that
> using the functions directly is in any way a good thing.
>
> The only cases for which it's genuinely useful is asking
> "ignoring what you say you are in OO terms, what are you
> actually implemented as underneath".
I still wonder what’s bad about using
UNIVERSAL::can( $foo, "can" )
as a pre-Scalar::Util-compatible replacement of
blessed( $foo )
that is, purely as a boolean test where only the truthness of the
return value is of interest but the actual reference is not. This
is the only case for which I ever invoke `UNIVERSAL::can` as a
function. (`UNIVERSAL::isa` I never invoke as a function at all.)
Given that all I’m interested in is the truthness of the return
value, the only scenario in which this would be a dumb idea would
be if
!!UNIVERSAL::can( $foo, "can" ) != !!$foo->can( "can" )
holds. The only way for that to hold given
defined UNIVERSAL::can( $foo, "can" )
is if
!defined $foo->can( "can" )
is true.
In other words, calling `UNIVERSAL::can` as a function would be
bad if `$foo` responds to a `->can` query… claiming that it has
no `can` method.
Which is absurd.
Hence, I cannot see how calling `UNIVERSAL::can` as a function is
harmful for *this one particular specific case* of inquiring
whether or not a reference can respond to `->can`.
Regards,
--
#Aristotle
*AUTOLOAD=*_;sub _{s/(.*)::(.*)/print$2,(",$\/"," ")[defined wantarray]/e;$1};
&Just->another->Perl->hacker;