Chcę przeszukać wiersze pliku, aby sprawdzić, czy którekolwiek z nich pasuje do jednego z zestawu wyrażeń regularnych.Skąd wiadomo, która część wyrażeń regularnych Perla jest dopasowana przez ciąg znaków?
coś takiego:
my @regs = (qr/a/, qr/b/, qr/c/);
foreach my $line (<ARGV>) {
foreach my $reg (@regs) {
if ($line =~ /$reg/) {
printf("matched %s\n", $reg);
}
}
}
ale może to być powolne.
Wygląda na to, że kompilator regex mógłby pomóc. Czy jest optymalizacja tak:
my $master_reg = join("|", @regs); # this is wrong syntax. what's the right way?
foreach my $line (<ARGV>) {
$line =~ /$master_reg/;
my $matched = special_function();
printf("matched the %sth reg: %s\n", $matched, $regs[$matched]
}
}
gdzie „special_function” jest specjalny sos mówi mi, który został dopasowany część regex.