my %clusters = ( cluster1 => [ 'server1', 'server2' ], cluster2 => [ 'server3', 'server4' ], ); my %averages; while ( my ($cluster, $machines) = each %clusters ) { my @values; foreach my $machine ( @$machines ) { push @values, # Whatever you do here for $machine } $averages{ $cluster } = # Whatever you do here with @values }