According to this
http://perldoc.perl.org/UNIVERSAL.html
I shouldn\'t use UNIVERSAL::isa() and should instead use $obj->isa() or CLASS->isa().
This means
To directly answer your question, the answer is at the bottom of the page you linked to, namely that if a package defines an isa
method, then calling UNIVERSAL::isa
directly will not call the package isa
method. This is very unintuitive behaviour from an object-orientation point of view.
The rest of this post is just more questions about why you're doing this in the first place.
In code like the above, in what cases would that specific isa
test fail? i.e., if it's a method, in which case would the first argument not be the package class or an instance thereof?
I ask this because I wonder if there is a legitimate reason why you would want to test whether the first argument is an object in the first place. i.e., are you just trying to catch people saying FooBar::method
instead of FooBar->method
or $foobar->method
? I guess Perl isn't designed for that sort of coddling, and if people mistakenly use FooBar::method
they'll find out soon enough.
Your mileage may vary.