
Since perl allows providing a subroutine reference, or a method name, to the -> operator (when used as a method call) and a subroutine doesn't require the invocant to actually be an object, safe::isa can be used to create safe versions of isa, can, does and does by using a subroutine reference that only tries to call the method if it's actually used on an object.