if(ref($reference) eq 'HASH'){ print 'Its a HASH reference'; ## Do Hash processing }elsif(ref($reference) eq 'ARRAY'){ print 'Its an ARRAY reference'; ## Do array processing }elsif(ref($reference)){ print 'Its a ' . ref($reference) . ' reference'; ## Handle invalid reference }else{ print "It isn't a reference"; ## Actual value, not a reference - do something }