package MyIO; sub isa { my $self = shift; my $type = shift; return 1 if $type eq 'IO::Handle'; return $self->SUPER::isa($type); } #### package MyNotIO; use base 'IO::Handle'; sub isa { my $self = shift; my $type = shift; return 0 if $type eq 'IO::Handle'; return $self->SUPER::isa($type); } #### package UNIVERSAL; sub safe_isa { my $obj = shift; return unless defined $obj and ref $obj; $obj->isa(@_); }