UNIVERSAL::isa( $_[0], 'HASH' ) and defined( my %h = %{ shift() } ) or die; #... defined(@array) is deprecated at -e line 1. (Maybe you should just omit the defined()?)