if( ! ref($r) ) { # no reference at all } elsif( ! UNIVERSAL::can($r,'can') ) { # unblessed ref } else { # blessed ref } #### if( ref($r) && UNIVERSAL::can($r,'can') ) { # blessed ref } #### if( ref($r) && eval { $r->can('can') } ) { # blessed ref }