in reply to clusters with hashes

The assumption that each cluster consists of exactly two servers is hardcoded into the last line.
#!/usr/bin/perl -T use strict; use diagnostics; # -- sub get_cpu { my $servername = shift; my %cpu = ( server1 => 10, server2 => 20, server3 => 5, server4 => 15, ); return $cpu{$servername}; }; # -- my %servers = ( server1 => 'cluster1', server2 => 'cluster1', server3 => 'cluster2', server4 => 'cluster2', ); my %clusters; foreach my $servername (keys %servers) { $clusters{$servers{$servername}} += get_cpu($servername); }; print "$_:\t".($clusters{$_}/2)."\n" foreach sort keys %clusters;

Replies are listed 'Best First'.
Re^2: clusters with hashes
by ruzam (Curate) on May 05, 2006 at 16:43 UTC
    Or skip the hardcoded server count assumption.
    my %clustertotal; my %clustercount; foreach my $servername (keys %servers) { $clustertotal{$servers{$servername}} += get_cpu($servername); $clustercount{$servers{$servername}}++; }; print "$_:\t".($clustertotal{$_}/$clustercount{$_})."\n" foreach sort +keys %clusters;