in reply to how to avoid opening and closing files

1. Read words from words.txt file into @X.
2. Go through temp.txt and remove any lines that contain any of the words present in @X.
This is all you are doing, right? The following code is untested.
open (TEMP,"<temp.txt"); open (TEMP_MOD,">temp_mod.txt"); while($line=<TEMP>) { $flag=0; foreach $word (@X) { if($line=~/$word/) #Does $line contain this $word? { $flag++; last; } } if($flag==0)#None of the words from @X is present in $line { print TEMP_MOD $line ; } } close TEMP; close TEMP_MOD;
You can also split the line read from TEMP into an array (say @arr) and then apply the logic of intersection of array elements given in Programming Perl for arrays @X and @arr.
If you get any elements in the interesection set, don't write the line into TEMP_MOD.