on an array it only undefines the value of an element
Actually, it does a bit more than "only" undefining the value. I'm not sure how useful this behavior is, but it's not quite the same as simply setting the value to undef. Here's a code snippet that demonstrates:
$ perl -MData::Dumper -le '
@array = (1 .. 3);
delete $array[1];
print Dumper \@array;
delete $array[2];
print Dumper \@array;'
When run, it outputs the following:
$VAR1 = [
1,
undef,
3
];
$VAR1 = [
1
];
We see that the first delete call does indeed appear to simply set the value to undef, but when we delete again, it demonstrates the difference.
Update: betterworld beat me to it, by a pretty large margin. That'll teach me not to reload before replying. :-) |