On Wed, 2002-10-16 at 09:54, Egleton, Gary wrote:
> Hi,
> 
> can any one point me at how to compare two hases.
> 
> ie
> 
> hash1
>       1 abc
>       2 def
>       3 ghi
> 
> hash2
>       1 abc
>       2 defzzz
>       3 ghi
> 
> I want to take the values for matching keys and see if they are the same if
> not write out the value
> 
> so in the above the values in 1 and 1 are ok, the values in 3 and 3 are ok
> but in key 2 they do not match
> 
> Thanks very much,
> 
> Regards, Gary
<snip />

You could always use grep to get the keys that don't match:

<code>
 #!/usr/bin/perl

use warnings;
use strict;

my %hash1 = (
        1 => 'abc',
        2 => 'def',
        3 => 'ghi',
);

my %hash2 = (
        1 => 'abc',
        2 => 'defzzz',
        3 => 'ghi',
);

for my $k (grep { $hash1{$_} ne $hash2{$_} } keys %hash1) {
        print "at key [$k]: [$hash1{$k}] doesn't equal [$hash2{$k}]\n";
}
</code>
-- 
Today is Prickle-Prickle the 70th day of Bureaucracy in the YOLD 3168
Or not.

Missile Address: 33:48:3.521N  84:23:34.786W


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

Reply via email to