use Scalar::Util qw/blessed/; sub does { my ($proto, @methods) = @_; return if ref $proto && ! blessed $proto; my @coderefs; foreach my $method (@methods) { push @coderefs, $proto->can($method) || (); } return wantarray ? @coderefs : \@coderefs; }