perlquestion
Tuna
I need to compare the contents of two HoH. Each hash represents files from a local cluster of machines and files in a remote cluster of machines. The code below correctly populates them both, but I don't know how to access each element for comparison.<p>
What I mean by comparison is each hash must contain the same keys and key values.
<p>
<CODE>
#!/usr/bin/perl -w
use strict;
use Digest::MD5;
use Data::Dumper;
my(%localDigest, %remoteDigest );
my ($file, $md5, $digest, $key, $clusterHost);
my @files = (@ARGV);
my @hosts = ("Maleah", "Austin");
foreach $clusterHost(@hosts)
{
foreach $file(@files)
{
open(FILE, $file) or die "Can't open '$file': $!";
binmode(FILE);
$md5 = Digest::MD5->new;
while (<FILE>)
{
$md5->add($_);
$digest = $md5->hexdigest;
$localDigest{$clusterHost}{$file} = $digest;
$remoteDigest{$clusterHost}{$file} = $digest;
}
close(FILE);
}
}
print Dumper (%localDigest,%remoteDigest );
</CODE>
<p>
Specifically, what I need to compare is, ie:
<CODE>
%localDigest
$VAR1 = 'Austin';
$VAR2 = {
'./gen-checksum.pl' => 'ad65a01b783248a21fcea95979a265a0',
'/etc/passwd' => 'c978c29a59ba0138e5ed0ca325f7ec1e'
};
$VAR3 = 'Maleah';
$VAR4 = {
'./gen-checksum.pl' => 'ad65a01b783248a21fcea95979a265a0',
'/etc/passwd' => 'c978c29a59ba0138e5ed0ca325f7ec1e'
};
</CODE>
equals
<CODE>
%remoteDigest
$VAR5 = 'Austin';
$VAR6 = {
'./gen-checksum.pl' => 'ad65a01b783248a21fcea95979a265a0',
'/etc/passwd' => 'c978c29a59ba0138e5ed0ca325f7ec1e'
};
$VAR7 = 'Maleah';
$VAR8 = {
'./gen-checksum.pl' => 'ad65a01b783248a21fcea95979a265a0',
'/etc/passwd' => 'c978c29a59ba0138e5ed0ca325f7ec1e'
};
</CODE>
<p>
Thanks, once again, <br>
Steve