rakeshrocks has asked for the wisdom of the Perl Monks concerning the following question:
For first loop iteration if returns false, but at the same time it creates an empty slot in a hash with undef value. (I checked it using Data::Dumper in loop to print hash.) so when for loop iterates for 2nd time, empty slot created matches if statment instead of elsif, and execute wrong set of instructions. I am not able to understand why an empty slot is created. somewhere i read there is a issue with use exists with nested (->) structure. Am I hiting the same issue ? I tried without defined, and faced same issue, so unable to understand.VAR1 = {A => { LEVEL1 => { LEVEL1_2 => { LEVEL1_2_3 => { VAL > 'somevalue' } } } } I am using a if statment with defined in a loop, for (my i = 0; i< 3; i++) { if (defined $hash->{A}->{LEVEL2}->{LEVEL2_2) { # do something } elsif (defined $hash->{A}->{LEVEL1}->{LEVEL1_2) { #do something } }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: usage of if on nested hash creating empty slot for non existing value
by Anonyrnous Monk (Hermit) on Jan 29, 2011 at 09:36 UTC | |
|
Re: usage of if on nested hash creating empty slot for non existing value
by ikegami (Patriarch) on Jan 29, 2011 at 18:26 UTC | |
|
Re: usage of if on nested hash creating empty slot for non existing value
by cdarke (Prior) on Jan 29, 2011 at 15:30 UTC | |
|
Re: usage of if on nested hash creating empty slot for non existing value
by bart (Canon) on Jan 29, 2011 at 16:46 UTC | |
|
Re: usage of if on nested hash creating empty slot for non existing value
by biohisham (Priest) on Jan 29, 2011 at 17:10 UTC |