sub is_a { croak "is_a() expects a package name" if (scalar @_ != 1 || !defined $_[0] || ref $_[0] ne ''); my $type = shift; return sub { return 0 if (!defined $_[0]); return (ref $_[0] eq $type) ? 1:0; }; }