my %GROUPS => ( A => 1, B => 2, C => 3 ); my %FOO = ( A => { 1 => x, 2 => y, 3 => z }, B => { 1 => x, 2 => y, 3 => z }, ); for my $group (keys %GROUPS) { my $foo = $FOO{$group}; for (keys %$foo) { print("$_ in group $group: $foo->{$_}\n"); } }