I recently did something similar comparing items that were in two different files using hashes.
Each hash had a primary key that was the list name with a value of 1 if it exixted in the first file, 2 if it existed in both files, and 3 if it was only in the secoond file.
my $file1 = "/home/scott/file1";
my $file2 = "/home/scott/file2";
my $hashOfLists;
my %hashOfLists;
open (FILE1, "$file1") or die "Could not open $file1 $!";
open (FILE2, "$file2") or die "Could not open $file2 $!";
######################################################
#####This block reads all of the items of the file into
#####a hash with the item being the key. Since I
##### was comparing 2 files each key received a
#####value of 1 if it was in the first file, 2 if
#####it was in both , and 3 if it was only in file 2
######################################################
foreach (<FILE1>)
{
chomp $_;
$hashOfLists{$_} =1;
}
foreach (<FILE2>)
{
chomp $_;
######################################################
#####if exists checks the hash to see if $_ exists.
##### If true $_'s value becomes 2,
#####if false, $_ gets a value of three
######################################################
if (exists $hashOfLists{$_})
{
($hashOfLists{$_}) =2;
}
else
{
($hashOfLists{$_})=3;
}
}
close FILE1 or die "Could not close $file1 $!";
close FILE2 or die "Could not close $file2 $!";
"The social dynamics of the net are a direct consequence of the fact that nobody has yet developed a Remote Strangulation Protocol." -- Larry
Wall