Here's something that I think does what you want. I'm sure all this can be done in place of that %sorted_by_attribute hash, but I'd need to look over the code some more to figure it out. Anyway, just replace your "print" loop with the following, then loop through %newhash to get at your data:
my %newhash;
foreach my $attribute (sort keys %sorted_by_attribute) {
my $individual_values = $sorted_by_attribute{$attribute};
foreach my $value (keys %$individual_values) {
my @systems = @{$sorted_by_attribute{$attribute}{$value}};
foreach $system (@systems) {
my $key = $HoH{$system}{'Group'};
my $str = sprintf "%s = > %s\n", $HoH{$system}{'System Name'}, $
+value;
push @{ $newhash{$attribute}{$key} }, $str;
}
}
}
print Dumper (\%newhash);
I'm sure the $key and $str variables can be done away with and those expressions put directly into the push statement, but it would be rather ugly. Anyway, I hope this does what you want.
--
There are 10 kinds of people -- those that understand binary, and those that don't.