sub can { my ($self, $meth) = @_; my $class = ref $self || $self; my $subref = *{$class . '::' . $meth}{CODE}; return $subref if defined $subref; for (@{$class . '::ISA'}) { $subref = $_->can($meth); return $subref if defined $subref; } return undef; }