Технический вопрос:
Учитывая регулярное выражение:
my $regEx = qr{whatever$myVar}oxi; # Notice /o for "compile-once"
Каков наиболее эффективный способ заставить его перекомпилировать по запросу ? (например, когда я знаю из логики программы, что значение $ myVar
изменилось) без отбрасывания / o
и в зависимости от внутреннего интеллекта Perl для автоматической перекомпиляции?
ПРИМЕЧАНИЕ. Регулярное выражение используется в подстановка, которая может повлиять на правила повторной компиляции sans / o:
$string2 =~ s/$regEx//;
Контекст таков:
У меня есть регулярное выражение, которое создается путем всасывания довольно длинной (> 1 КБ) строки из конфигурационного файла.
Этот файл перечитывается каждые 60 минут.
Если строка, считанная из файла, изменяется (как определено путем изменения метки времени файла), я хочу повторно скомпилировать регулярное выражение, используя повторно пропущенное строковое значение в $ myVar
.
Регулярное выражение используется неоднократно и часто в модуле Perl, работающем под управлением mod_perl.
Это означает, что (в сочетании с длиной строки> 1-2k) я должен использовать "
$ perl -e '{for (my $i=0; $i<3; $i++) {
my $re = qr{$i}oix; $s="123"; $s =~ s/$re//;
print "i=$i; s=$s\n"; }}'
i=0; s=123
i=1; s=123
i=2; s=123
$ perl -e '{ for (my $i=0; $i<3; $i++) {
my $re = qr{$i}ix; $s="123"; $s =~ s/$re//;
print "i=$i; s=$s\n"; }}'
i=0; s=123
i=1; s=23
i=2; s=13