Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

I'm looking for a suggestion on how to code the following situation: I have a text file that list values. I read all the records in the text file into @arrayA. Then, I run an sql query on a database. The results of that query goes into @arrayB. I want to find out what records exist in @arrayB but don't exist in @arrayA. Can suggest a good approach? Thanks.

Replies are listed 'Best First'.
Re: logic question
by Masem (Monsignor) on Feb 14, 2002 at 19:10 UTC
    Assuming that when you mean records, you have a single unique id value that is stored in the array, then you can do the usual trick of using a hash as a search mechanism:
    my %temphash = map { $_ => 1 } @arrayA; my @inBbutnotA = grep { !$temphash{ $_ } } @arrayB;
    If your record is more complicated, you have have to add another step to break out the unique id for either of these steps, but the idea is still the same.

    -----------------------------------------------------
    Dr. Michael K. Neylon - mneylon-pm@masemware.com || "You've left the lens cap of your mind on again, Pinky" - The Brain
    "I can see my house from here!"
    It's not what you know, but knowing how to find it if you don't know that's important

Re: logic question
by rdfield (Priest) on Feb 14, 2002 at 19:10 UTC
    Hmm, who hasn't read the FAQ? perlfaq4 has the answer.

    rdfield

Re: logic question
by PrimeLord (Pilgrim) on Feb 14, 2002 at 19:57 UTC
    Instead of using arrays just read the text file into a has then you can do something like this. $hash_b{$sql_entry}++ unless exists $hash_a{$sql_entry};