in reply to Re: comparing files
in thread comparing files

thanks for the help....basically if i have two files, and for every name that matches in the first column (not necessarily the same number of lines in the two files), i want to print out the second and third columns of the second file.....does code in the previous posting make sense? so i have file 1:
case1 23 home case2 45 match
and file 2:
case0 22 match case5 55 home case2 32 match
so i want my file to print out
case2 32 match
thanks for the all the help

Replies are listed 'Best First'.
Re: Re: Re: comparing files
by mephit (Scribe) on Aug 23, 2002 at 21:09 UTC
    perldoc -q contain
    Found in /usr/lib/perl5/5.6.0/pod/perlfaq4.pod How can I tell whether a list or array contains a certain element? Hearing the word "in" is an indication that you probably should have used a hash, not a list or array, to store your data...
    Populate a hash with the keys as the values of the first column of the first datafile, then loop through the second file and check for the existence of the corresponding number in the hash, as such: (I used pattern matching 'cause that's the first thing that popped into my head, but you can use whatever's best for your particular datafile.)
    my %h1; while (<ONE>) { $h1{$1} = $2 if /^(\d)+\s+(.+)/; } while (<TWO>) { /^(\d)+\s+(.+)/; printf "Match: %s\t%s\n", $1, $2 if exists $h1{$1};
    I don't know how efficient this is, but it works. HTH.

    --

    There are 10 kinds of people -- those that understand binary, and those that don't.