You could try to feed your strings into Regexp::Assemble. That way you get a single regex you can use to test your lines against, which would probably speed things up. OTOH, you cannot tell wich of your original search strings actually matched the line, if that is important for you. If it is, then you would have to do your explicit tests after the regex matched. Depending on the blank/hit ratio it may still be faster.
Interesting. I'd never heard of Regexp::Assemble...
From the doc:
It is also possible to track the original patterns,
so that you can determine which, among the source patterns
that form the assembled pattern, was the one that caused
the match to occur.