> -----Original Message-----
> From: Barry Jones [mailto:[EMAIL PROTECTED]]
> Sent: Friday, May 24, 2002 6:32 AM
> To: Beginners @ Perl (E-mail)
> Subject: Getting through a deep hash
> 
> 
> I'm having trouble with this set of code.  I'm trying to 
> navigate my way
> through a VERY deep hash (aka hash with references to hash with
> references to arrays with references to hashes, which may not contain
> any values cause that's the way it was written before I got here).
> Anyway, this is not supposed to be flexible in any way, I'm 
> just trying
> to hard code my way down to the bottom of the hash set just to prove I
> can get there.  
> 
> I'm having a problem on the line where the ### is present.  I haven't
> been able to see the keys from the hash referenced by 
> $spot->{$key}.  So
> far I have tried several things to get to them, listed under 
> the code. 
> 
> 
>  my $results = $test->{testing_results}{testing_result};
>       if(ref($results) eq 'ARRAY') {
>           for my $spot (@$results) {
>              for my $key (keys %$spot) {
>                 if (ref($spot->{$key}) eq 'HASH') {
>                    if($key eq 'value_group') {
>                        ###my %vg = $spot->{$key};
>                        $result .= $key . "<br>";
>                    }
>                 }
>              }
>           }
>       }
> 
> Previous attempts:
> for my $morekeys (keys $spot->{$key}) {}
> for my $morekeys (keys %$spot->{$key}) {}
> for my $morekeys (keys %($spot->{$key})) {}
> for my $morekeys (keys (%$spot->{$key})) {}
> 
> and as you can see in the line with the ### I was just trying 
> to put it
> into a new hash, but that is giving me this error:
> Reference found where even-sized list expected 

If $spot->{$key} is a reference to a hash, then you
get to the actual hash by dereferencing:

   %{$spot->{$key}}

So, to assign:

   my %vg = %{$spot->{$key}};

Or to iterate over the keys:

   for my $morekey (keys %{$spot->{$key}}) { ... }

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to