(Update: Having now seen them, I actually like dragonchild and davidrw's answers, above (as well as Herkum's, below), even better, because they redesigned the data structure to be more natural. So my answer, though closer to your original code, is not the one I would choose.)
#!/usr/bin/perl -w + use strict; use warnings; + + my %servers = ( 'server1' => 'cluster1', 'server2' => 'cluster1', 'server3' => 'cluster2', 'server4' => 'cluster2' ); + my %values = ( 'server1' => 20.00, 'server2' => 10.00, 'server3' => 5.00, 'server4' => 15.00, ); + my %cluster_count; + # # Here is where you fill in values, such that... # # $values{'server1'} = <cpu info for server1> # $values{'server2'} = <cpu info for server2> # ... etc ... # # But, I'm going to cheat and do ... + %values = ( 'server1' => 20.00, 'server2' => 10.00, 'server3' => 5.00, 'server4' => 15.00, ); + my %results_by_cluster; + # # Calculate results by cluster, and save cluster counts (this is # necessary for the calculation of averages). # foreach my $srvr (keys (%servers)) { my $cluster = $servers{$srvr}; ++$cluster_count{$cluster}; $results_by_cluster{$cluster} += $values{$srvr}; } + # # Display results # foreach my $cluster (qw(cluster1 cluster2)) { my $avg = $results_by_cluster{$cluster} / $cluster_count{$cluster} +; printf "%20.20s average is: %f\n", $cluster, $avg; }
In reply to Re: clusters with hashes
by liverpole
in thread clusters with hashes
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |