Не останавливаться perl на: квантификатор в {,} больше чем 32766 в регулярном выражении - PullRequest
2 голосов
/ 22 апреля 2020

Вопрос Сохранить новые строки для POD в случае PPR :: uncomment был решен в ответе путем определения нового метода decomment2, который корректно покидает символы новой строки. Все работает довольно хорошо, но теперь у меня есть файл для обработки с очень большим ЗДЕСЬ документом (от большого до большого, чтобы опубликовать sh вот так, к сожалению, ссылка на внешний сайт): https://github.com/openssl/openssl/blob/master/crypto/bn/asm/ppc.pl

Когда этот файл обрабатывается через PPR::decomment2, я получаю сообщение:

Quantifier in {,} bigger than 32766 in regex; marked by <-- HERE in m/(?s:.{ <-- HERE 39303})/ at /home/User/perl5/lib/perl5/Doxygen/Filter/Perl.pm line 1222.

Строка 1222: $str =~ m{ \A (?&PerlDocument) \Z в методе PPR::decomment2. В этот момент процесс Perl завершается.

  • Есть ли способ каким-либо образом увеличить этот предел "32766", то есть 2 ** 15-2?
  • Есть ли способ не завершить процесс Perl, а установить PPR::ERROR или другой флаг, чтобы это можно было обработать в коде?

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

В качестве информации максимальное значение было удвоено в Perl 5.30 до 65534.

1 голос
/ 22 апреля 2020

Я провел некоторое исследование и прошел мимо возможности eval.

Есть ли что-либо против такой конструкции, как:

eval {
   my $mystr = PPR::decomment2($str)
   # do some local dependent stuff
};
if ($@) {
  # do the local handling if the error
}

Есть ли что-нибудь против такой конструкции?

Редактировать (23 апреля 2013 г.): разработчик пакета PPR (Дамиан Конвей) сделал исправление. Номер пакета 25.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...