Deleting an array element effectively returns that position of the array to its initial, uninitialized state. Subsequently testing for the same element with exists() will return false. Note that deleting array elements in the middle of an array will not shift the index of the ones after them down--use splice() for that. See "exists".
####
#!/usr/bin/perl -w
my @array = (1, 2, 3, 4);
print "length = ", scalar @array,$/;
delete $array[2];
print "length = ", scalar @array,$/;
__END__
length = 4
length = 4
####
first
second
third
fourth
####
use Tie::File;
my $file = "file.csv";
tie my @lines, Tie::File, $file or die "can't update $file: $!";
$lines[1] = $lines[0];
shift(@lines);
untie @lines;
####
first
third
fourth