in reply to Exists and arrays

Perhaps the Data::Dumper output is a little misleading in this case. I do see an assignment to undef in the source code:
elsif (!defined($val)) { $out .= "undef"; }

Maybe Dumper needs to print out something for non-existent array elements. Maybe it loosely uses 'undef' to mean both undefined and non-existent. If you print the Dumper output before and after your $dow[5] = undef; assignment, they are the same. You can play around with the source code if you really want to get to the bottom of this mystery.