in reply to comparing arrays

Update: I now realize I was unintentionally redundant. I opened the reply form, then got distracted; by the time I submitted, someone else had come up with essentially the same concept. My apologies! On the upside, that does prove that it's a good idea. :)

Do this, maybe:

while <$FILE_1> { $file1{$_}=0; } while <$FILE_2> { my ($match_val) = split(/\s+/, $_); #split on whitespace print $_ if defined $file1{$match_val}; }
Searching hash keys is faster than a linear array search (especially for large constructs). The first loop loads a hash where the keys are the data from file 1 (the values don't matter here). The second loop prints each line in file2 that has a value in its first column that matches a hash key.

Should be pretty fast, and has the added advantage of not reading all of file 2 into memory.

--
$me = rand($hacker{perl});

All code, unless otherwise noted, is untested

Replies are listed 'Best First'.
Re^2: comparing arrays
by Anonymous Monk on Sep 21, 2004 at 16:16 UTC
    thanks all for many good and working suggestions