Hi again,
This:
is redundant.%{%$excel_hash{$keys1} }
Work from the inside.
Let's start again. Say you have a hash reference $excel_href. (Note you should name it with 'href' since it is not a hash, but a scalar that holds a reference to the hash.) Now you want to loop through the keys, so make it easy on yourself and deference the hashref at the start.
Loop through the keys, using for, which is the same as for each:my %excel_hash = %{ $excel_href };
So now you have the key, and you need the value, and we know that the value is going to be a "sub-hash", ie a scalar holding a reference to another hash. Since we're lazy and we don;t like typing arrows, and for consistency, we can dereference this hashref, too, and we'll do it right after we fetch the value:for my $key ( keys %excel_hash ) { ... }
Finally, you want to get the value of the key named 'Name' in the inner hash.for my $key ( keys %excel_hash ) { my $inner_href = $excel_hash{ $key }; my %inner_hash = %{ $inner_href }; }
Or, for a version more similar to yours:for my $key ( keys %excel_hash ) { my $inner_href = $excel_hash{ $key }; my %inner_hash = %{ $inner_href }; my $name = $inner_hash{'Name'}; }
Or, for a version sticking to simple for loops (each should be handled with care):for my $key1 ( sort keys %{ $excel_href } ) { while ( my ( $key2, $val2 ) = each %{ $excel_href->{ $key1 } } ) { print "$key2 = $value \n"; } }
Or, for the convenient way using map (assuming you know the name of the inner key you are trying to read):for my $outer_key ( keys %{ $excel_href } ) { print "$outer_key:"; for my $inner_key ( keys %{ $excel_href->{ $outer_key } } ) { print "\t$inner_key = $excel_href->{ $outer_key }->{ $inner_ke +y }\n"; } }
print "$_\n" for map {"$_: Name = $excel_href->{ $_ }->{'Name'}"} keys + %{ $excel_href };
I expect all this is clear as mud at first reading, but have a play around and it should start making sense. Post back here with any questions.
In reply to Re^6: excel to hash
by 1nickt
in thread excel to hash
by colox
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |