my $type = ref $param; if (!$type) { # it's a simple scalar } elsif ($type eq 'GLOB') { # an unblessed GLOB ref } elsif ($type eq 'IO::Handle') { # it's a non-overloaded IO::Handle } else { ... }