sub foo { my $self = shift; if (ref $self) { # Do stuff return $some_useful_value; } else { # Complain return undef; } } #### sub foo { my $self = shift; unless (ref $self) { # Complain return undef } # Do stuff return $some_useful_value }