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

Re: ignoring some fields in a comparision of hashes

Thread Previous | Thread Next
From:
Jeff 'japhy' Pinyan
Date:
February 7, 2002 10:21
Subject:
Re: ignoring some fields in a comparision of hashes
Message ID:
Pine.GSO.4.21.0202071320230.15873-100000@crusoe.crusoe.net
On Feb 7, Chas Owens said:

>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).

You're already using hashes!  The better solution to your problem is to
make a hash of keys to ignore.

><example>
>my @ignore = ("key1", "key2");

  my %ignore;
  @ignore{ "key1", "key2" } = ();

>KEYS: foreach my $key (keys %a) {

>  foreach my $ignore (@ignore) {
>    next KEYS if $key eq $ignore;
>  }

    next KEYS if exists $ignore{$key};

>	if ($a{$key} ne $b{$key}) {
>		print "$key is different ($a{$key}, $b{$key})\n";
>	}
>}
></example>

-- 
Jeff "japhy" Pinyan      japhy@pobox.com      http://www.pobox.com/~japhy/
RPI Acacia brother #734   http://www.perlmonks.org/   http://www.cpan.org/
** Look for "Regular Expressions in Perl" published by Manning, in 2002 **
<stu> what does y/// stand for?  <tenderpuss> why, yansliterate of course.


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