ID1>>^a
ID2>>h$
ID3>>b
ID4>>[a-z]{9,10}
ID5>>[ah]
####
id_A: abcdefg
id_B: bcdefgh
id_C: cdefghijk
##
##
#!/usr/bin/perl -w
use strict;
use autodie;
open(my $regexefile, "<", "regexes.txt");
my @regexes = <$regexefile>;
chomp @regexes;
my %regexes = map { split(/>>/, $_) } @regexes;
my %matches;
open(my $inputfile, "<", "lines.txt");
while (<$inputfile>) {
while (my ($id, $regex) = each(%regexes))
{
my (undef, $line) = split(/ /, $_);
if ( $line =~ /$regex/) {
if (! defined($matches{$regex})) {
$matches{$regex} = [];
}
chomp $line;
push($matches{$regex}, $line);
}
}
}
while (my ($regex, $matches) = each(%matches)) {
if (!scalar @$matches) {
next;
}
print "$regex: No of matches " . scalar @$matches . "\n";
foreach my $match (@$matches) {
print "matched $match\n";
}
}