A hash or array element can be true only if it's defined and defined only if it exists, but the reverse doesn't necessarily hold true.
####
exists may also be called on array elements, but its behavior is much less obvious and is strongly tied to the use of delete on arrays.
WARNING: Calling exists on array values is strongly discouraged. The notion of deleting or checking the existence of Perl array elements is not conceptually coherent, and can lead to surprising behavior.
##
##
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @array;
$array[3] = 2;
print Dumper \@array;
__END__
$ perl test.pl
$VAR1 = [
undef,
undef,
undef,
2
];