You don't need
isa, you need
can.
I often write code of which I assume that an object is able to execute certain methods. When in doubt, I try can() first, before actually calling the method. These classes do not need to be derived from a common class, that is an implementation detail to make virtual classes possible in languages like C++, for example. In Perl, when classes don't have common methods, it doesn't make sense to make them inherit from a common ancestor class.
I do assume that for those classes, methods of the same name serve a similar purpose, and have the same API. That may be a weak point. Likely so.