I think that you want to reorganize an array of hashes into a hash of arrays.
use strict;
use warnings;
use Data::Dumper;
my @servers = (
{ Host => 'server02', GroupName => 'serversA' },
{ Host => 'server04', GroupName => 'serversA' },
{ Host => 'server02', GroupName => 'serversB' },
{ Host => 'server04', GroupName => 'serversB' },
{ Host => 'server02', GroupName => 'serversC' },
{ Host => 'server04', GroupName => 'serversC' },
{ Host => 'server02', GroupName => 'serversD' },
);
my %consolidated;
foreach (@servers) {
push @{$consolidated{$_->{Host}}}, $_->{GroupName};
}
print Dumper(\%consolidated);
OUTPUT:
$VAR1 = {
'server02' => [
'serversA',
'serversB',
'serversC',
'serversD'
],
'server04' => [
'serversA',
'serversB',
'serversC'
]
};