Простой код:
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$)))))
поэтому вопрос:
- здесь правильный путь, как сохранить скомпилированную версию?
- если нет способа - как декомпилировать, получить исходную версию?
- любая идея?