Я хочу сопоставить строку, которую я прочитал, с массивом возможных совпадений. Также было бы хорошо, если бы он мог вернуть индекс строки соответствия. Я мог бы написать жесткий код достаточно легко ... и, вероятно, на этот раз это будет целесообразно, но в общем случае я хотел бы посмотреть, возможно ли это. Я просмотрел некоторые книги и онлайн (в том числе stackoverflow), но не могу найти то, что ищу, и не могу соединить точки, чтобы разобраться сам.
Вот пример общего вида вещей, которые я ищу ... конечно, это не работает, поэтому я и прошу помощи. Но я надеюсь, что этого достаточно, чтобы понять мои намерения.
Пример:
my $patterns;
my $line;
my $c = 0 ;
$patterns{$c++} = "$exact" ; # where the $ in $exact marks the beginning of line.
$patterns{$c++} = "$T?:" ; # where the ? is the normal wildcard
$patterns{$c++} = "" ;
$patterns{$c++} = "exact" ;
open (FILE, "example.txt") || die "Unable to open file.\n";
while (my $line = <IN>) {
my $idx = -1;
for ($i=0; $i<$c :$i++) {
if ($line =~ /$patterns{$i}/ ) { $idx = $i ; }
}
$result = $idx; # of course this will return index of last pattern match, but that's ok
}
close(FILE);