Calling UNIVERSAL::can() as a function is allowed. (was: [OT] best way to determine existence of a function in a package)

Jonathan Stowe jns at
Wed Nov 21 20:47:32 GMT 2007

On Wed, 2007-11-21 at 19:17 +0000, Andy Wardley wrote:
> Matt S Trout wrote:
>  > You should never, ever, EVER use any UNIVERSAL::* as a function. That's not
>  > what it's for, not how it's designed to work and can seriously fuck things
>  > up.
> I'm sorry, but you're wrong.


UNIVERSAL::isa() as a function is a perfectly sensible way of
determining whether a reference you have been handed is of the type that
you require. Of course you could check with Scalar::Util::blessed()
first and then call isa as a method but then why bother. I know where I
can find languages with strongly typed method signatures.


More information about the mailing list