develooper Front page | perl.beginners | Postings from February 2002

Re: ignoring some fields in a comparision of hashes

Thread Previous | Thread Next
From:
Christopher Solomon
Date:
February 7, 2002 11:06
Subject:
Re: ignoring some fields in a comparision of hashes
Message ID:
20020207105835.D76429-100000@csolomon-bsd.valueclick.com

%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: beginners-unsubscribe@perl.org
> For additional commands, e-mail: beginners-help@perl.org
>
>


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About