carcassonne has asked for the wisdom of the Perl Monks concerning the following question:
I'd like to compare the 'eth' value of each component against the other 'eth' values of the /other/ components. Not of the same component. I've started with some loops but then it is looking quite awkward and not graceful at all. Surely there's a better path for doing this. I'm thinking about breaking down each COMP component into its own hash to ease doing the comparisons (they are currently read from a config file using Config::Std).
For instance, COMP1->eth1 would be compared against all other COMPn->ethx values where n !=1. Then, COMP1->eth2 would be compared the same. Then, COMP2->eth1 against all other eth values of all other COMP, so on so forth. Only half the quantity of values would have to be compared I presume.
Any suggestions/insights would be greatly appreciated on how to tackle this in good form.
my %components = ( COMP1 => { eth1 => "10.172.9.21/24", eth1_gw => "10.172.1.1", eth2 => "10.172.10.21/24", }, COMP2 => { eth1 => "10.172.9.22/24", eth2 => "10.172.11.21/24", }, COMP3 => { eth1 => "10.172.11.21/24", eth2 => "10.172.13.21/24", eth3 => "10.173.2.98/24", }, );
foreach my $compName (keys %components) { foreach my $param (keys %{$components{$compName}}) { if ($param =~ /eth[0-9]$/) { # [ then loop again through the COMP keys, excluding the current key # ... does not seem nice ] } }
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Comparing hash values against other hash values
by ig (Vicar) on May 22, 2009 at 02:58 UTC | |
Re: Comparing hash values against other hash values
by johngg (Canon) on May 22, 2009 at 08:26 UTC | |
by jvector (Friar) on May 22, 2009 at 23:56 UTC |