Unrolling nested hashes.
#!/usr/bin/perl
use strict ;
my %struct ;
$struct{foo}{1} = "one" ;
$struct{bar}{2} = "two" ;
foreach my $hash ( keys (%struct) )
{
print "$hash \n";
foreach my $key ( keys ( %{$struct{$hash}} ) )
{
print "\t$key \n" ;
}
}
[id://castaway]'s code:
#!/usr/bin/perl -w
use Data::Dumper;
my $hashtest;
$hashtest->{'abc'}->{'filename'} = 'fred'; $hashtest->{'def'}->{'filen
+ame'} = 'harry';
foreach $v (values (%{$hashtest}))
{
$testhash->{$v->{'filename'}} = 1;
}
print Dumper($testhash);
My version to get his desired results:
#!/usr/bin/perl
use warnings ; # perl5 adn above
use strict ; # always!
use Data::Dumper;
my @files ;
my %hashtest;
# load some dummy data
$hashtest{'abc'}{'filename'} = 'fred';
$hashtest{'def'}{'filename'} = 'harry';
# unfold outter has keys
foreach my $key (keys (%hashtest))
{
# push the file name ont @files.
# printing $hashtest{$key}{'filename'} etc would
# be apropriate as well
push @files, $hashtest{$key}{'filename'} ;
}
print Dumper(\@files);
|