use Data::Dumper; use strict; use warnings; my $a = ["abc","cba"]; if (defined($a->[2]) && $a->[2] ne '') { } print Dumper($a); if (defined($a->[2]->[3]) && $a->[2]->[3] ne '') {#this is autovivification } print Dumper($a); #### $VAR1 = [ 'abc', 'cba' ]; $VAR1 = [ 'abc', 'cba', [] #this is autovivification ];