Простой код:
use 5.014;
use warnings;
my $re = <DATA>;
chomp $re;
my $re2 = qr/$re/;
say $re2;
__END__
^\w$
Результат:
(?^u:^\w$) #added the (?^u:
Есть ли какой-нибудь правильный способ декомпилировать $ re2, возвращая исходное регулярное выражение?
Мотивация: регулярное выражениеявляется значением конфигурации, поэтому необходимо:
- прочитать его
- скомпилировать
- сохранить его в файл для последующего использования.
Но не могу сохранить скомпилированное регулярное выражение для последующего использования, потому что при каждой компиляции регулярное выражение расширялось с помощью (? ^ U:, поэтому после нескольких циклов я заканчивал следующим образом:
(?^u:(?^u:(?^u:(?^u:(?^u:^\w$)))))
, поэтомувопрос:
- есть ли здесь какой-нибудь правильный способ, как сохранить скомпилированную версию?
- если нет способа - как декомпилировать, чтобы получить оригинальную версию?
- есть идеи?