[Omaha.pm] Parsing a Text File

Chris St. Pierre stpierre at NebrWesleyan.edu
Fri May 29 14:02:18 PDT 2009


On Fri, 29 May 2009, Andrew Embury wrote:

> Can anyone point me in the right direction on a good way to regex match a
> file and only output the lines that contain one of the patterns in the
> array?  The text file is large, so iterating the file mutiple times is not a
> good solution for me.

If I understand your question correctly, you might try using
Regexp::Assemble.   I.e., something like:

use Regexp::Assemble;

my $ra = Regexp::Assemble->new();
foreach (@regexps) {
   $ra->add($_);
}
my $re = $ra->re;

open(my $FH, '<', "/path/to/file")
   or die "Couldn't read from /path/to/file: $!";
while (<$FH>) {
   /$re/ and print;
}
close($FH);

Untested, YMMV, use only as directed, etc. :)

Chris St. Pierre
Unix Systems Administrator
Nebraska Wesleyan University



More information about the Omaha-pm mailing list