in reply to Defined vs. undefined
The real issue you have is that when the hash is empty, @keyarr gets no values from keys %hash. Thus, $keyarr[0] is undefined, causing the warning.
However, when the hash is not empty, @keyarr has values, so $keyarr[0] is defined and doesn't trigger the warning.
Add a print statement to show what's in @keyarr and then it may be clearer to you what is happening.
my (%hash); #my (%hash) = ( foo => 'bar' ); # Try this variation my (@keyarr)=(keys (%hash)); print "keys: '@keyarr'\n"; # Add this line if (defined ($hash{$keyarr[0]})) {print "hash is defined\n";} else {print "hash is undefined\n";}
-xdg
Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Defined vs. undefined
by misterb101 (Sexton) on Feb 10, 2006 at 15:57 UTC | |
by xdg (Monsignor) on Feb 10, 2006 at 17:27 UTC |