Как проанализировать регулярные выражения в Perl API

Я работаю над некоторым кодом, который должен сериализовать регулярные выражения Perl, включая любые флаги регулярных выражений. Поддерживается только подмножество флагов, поэтому мне нужно определить, когда неподдерживаемые флаги, такие как/u находятся в объекте регулярных выражений.

Текущая версия кода делает это:

static void serialize_regex_flags(buffer *buf, SV *sv) {
  char flags[] = {0,0,0,0,0,0};
  unsigned int i = 0, f = 0;
  STRLEN string_length;
  char *string = SvPV(sv, string_length);

Потом вручную обрабатываетstring char-by-char, чтобы найти флаги.

Проблема здесь в том, что строковая спецификация флагов регулярных выражений изменилась (я думаю, в Perl 5.14), например, с.(?i-xsm:foo) в(?^i:foo), что делает разбор боли.

Я мог бы проверить версиюperlИли просто напишите анализатор для обработки обоих случаев, но что-то подсказывает мне, что должен существовать превосходный метод самоанализа.

Ответы на вопрос(2)

Ваш ответ на вопрос