note
Roger
Yes, this is a well known behavior/feature called autovivification. It basically means that Perl will create the variable on the fly. The use strict pragma will only stop autovivification of variables, but not hash elements. To test for the existance of a hash key with out creating it, you must use the <b>exists</b> function. Use along the lines of <code>if exists $hash->{1}</code> instead.<br><br>
<code>
perldoc -f exists
exists EXPR
Given an expression that specifies a hash element or
array element, returns true if the specified element
in the hash or array has ever been initialized, even
if the corresponding value is undefined. The
element is not autovivified if it doesn't exist.
print "Exists\n" if exists $hash{$key};
print "Defined\n" if defined $hash{$key};
print "True\n" if $hash{$key};
print "Exists\n" if exists $array[$index];
print "Defined\n" if defined $array[$index];
print "True\n" if $array[$index];
A hash or array element can be true only if it's
defined, and defined if it exists, but the reverse
doesn't necessarily hold true.
....
</code>
484615
484615