%ignore = map { $_ => 1 } @ignore;
@diff = map { $a{$_} ne $b{$_} } grep { !$ignore{$_} } keys %a; @diff will end up with a list of key/value pairs of %a that are different from %b, excluding those of %ignore. note: this is untested. Chris On 7 Feb 2002, Chas Owens wrote: > I have two hashes (%a and %b) that contain data for one person from two > different systems and I want to compare these hashes to see if the > systems are out of sync. The catch is I know that some of the fields > will always be different and I want to ignore those fields. Below is my > solution, does anyone have a better way of doing this? BTW: there are a > lot of fields currently with more being added as time goes on and the > number of fields I want to ignore will stay pretty much the same). > > <example> > my @ignore = ("key1", "key2"); > > KEYS: foreach my $key (keys %a) { > foreach my $ignore (@ignore) { > next KEYS if $key eq $ignore; > } > if ($a{$key} ne $b{$key}) { > print "$key is different ($a{$key}, $b{$key})\n"; > } > } > </example> > > -- > Today is Pungenday the 38th day of Chaos in the YOLD 3168 > All Hail Discordia! > > Missle Address: 33:48:3.521N 84:23:34.786W > > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]