use Data::Dumper; $x[0]=[0];map{undef $_}(@x);print "still defined\n" if defined @x; print Dumper(\@x); #### defined(@array) is deprecated at undef1.pl line 2. (Maybe you should just omit the defined()?) still defined $VAR1 = [ undef ];