Somewhere in the "perldoc -f exists" i read: ==================================================================== Although the deepest nested array or hash will not spring into existence just because its existence was tested, any intervening ones will. Thus "$ref->{"A"}" and "$ref->{"A"}->{"B"}" will spring into existence due to the existence test for the $key element above. This happens anywhere the arrow operator is used, including even:
2003-06-20 Last change: perl v5.6.1 1 User Contributed Perl Documentation BAA4HAI02(1) undef $ref; if (exists $ref->{"Some key"}) { } print $ref; # prints HASH(0x80d3d5c) This surprising autovivification in what does not at first--or even second--glance appear to be an lvalue context may be fixed in a future release. ====================================================================== May be.. -Sharad -----Original Message----- From: Eric Walker [mailto:[EMAIL PROTECTED] Sent: Friday, June 20, 2003 2:39 PM To: perlgroup Subject: HASH PROBLEM!! I have a check I am doing with a hash. if (exists $deref{$drcrule}) This check fails as if the keyvalue is a part of the hash, but when I print out the keys like this foreach my $item (%{$deref}){ print "$item\n"; } And it is not in the list. I ran this on a previous data that had this in the hash, does perl not clean the address space. Is it possible for this data to be lingering from that last run? Thanks... -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]