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      [EMAIL PROTECTED]      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.


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to