in reply to (jeffa) 2Re: comparing two arrays
in thread comparing two arrays

Thanks for your help. I'm so close, but something is not working. I am trying to debug the following, but it seems that although both the @file contain the @report strings, I am not getting a match. Is it possible when I load the text file into @file array, that the elements are not compared as strings? Frusterating!!!!! The contents of the @file looks like this:
sqltable_mike table loaded successfully with 282873
sarak_mike table loaded successfully with 282873 records
sticks table loaded successfully with 282873 records.
hello table loaded successfully with 282873 records.
All I need it to do is match all @report contents with the internal @file. What am I doing wrong. Your assistance is greatly appreciated. <CODE> use strict;
my @compare=();
my $file='d:\mms_tableload.txt';
my @file="";
open(FILE,"<$file");
@file = <FILE>;
close(FILE);
my @report = qw(sqltable_mike sarak_mike );
my @compare = ( @report, qw (@file ));
# off by 0
print '@file was off by '
. simple_compare(\@report,\@compare)
. " elements\n";
# still 0, that elem wasn't in @report
pop @file;
print '@file was off by '
. simple_compare(\@report,\@compare)
. " elements\n";
# off by 1, that one was
shift @file;
print '@file was off by '
. simple_compare(\@report,\@file)
. " elements\n";
# returns number of elements in A that aren't in B
sub simple_compare {
my ($A,$B) = @_;
# build lookup table
my %seen = map { $_ => 1 } @$B;
# find those in A that aren't in B
my @aonly;
foreach my $item (@$A) {
push @aonly,$item unless ($seen{$item});
}
return scalar @aonly;
}
<CODE>

Replies are listed 'Best First'.
(jeffa) 4Re: comparing two arrays
by jeffa (Bishop) on Nov 25, 2001 at 23:11 UTC
    This is a problem:
    @file = ; # you probably meant @file = <FILE>; # and then you need to chomp @file; # to remove trailing new lines

    jeffa