"reg_node overrun" при компиляции регулярных выражений в perl

Я пытаюсь запустить скрипт, который определяет несколько (сложных) регулярных выражений: https://github.com/wo/opp-tools/blob/master/rules/Keywords.pm. Всякий раз, когда я включаю этот модуль, Perl вылетает с сообщением "panic: reg_node overrun пытается создать 51 в файле rules / Keywords.pm строка 60". Это с Perl v5.14.2 на Ubuntu 12.04. Любые идеи, которые могут быть причиной этого, будут оценены.

Обновление: вот фрагмент, который вызывает проблему.

use strict;
use warnings;
use utf8;

my $re_address_word = qr/\b(?:
universit|center|centre|institute?|sciences?|college|research|
avenue|street|philosophy|professor|address|department|
umass
)\b/ix;

our $re_publication_word = qr/\b(?:
forthcoming|editors?|edited|publish\w*|press|volume
to\sappear\sin|draft|editor\w*|reprints?|excerpt|
circulation|cite
)\b/ix;

my $re_notitle = qr/
$re_address_word |
$re_publication_word |
\b(?:thanks?|
   @|
   [12]\d{3}|
   abstract
)/ix;

our $re_title = qr/^
(?!.*$re_notitle?.*)
\p{IsAlpha}    
/x;

1 ответ

Сегодня я столкнулся с той же проблемой при составлении регулярных выражений, состоящих из нескольких выражений. Пример ниже иллюстрирует код, который вызвал проблему:

    my $cities = qr/(Foo1|Foo2|FooBarss)/;
    ## Solution change ss -> s[s]
    ## my $cities = qr/(Foo1|Foo2|FooBars[s])/;
    my $street = qr/(foo|bar|baz)/;

    $text =~ /$street \s+ $cities/;

Решение состояло в том, чтобы заменить литерал ss на s[s], это кажется довольно случайным, и я не могу найти ссылку, чтобы поддержать его, но это работает для меня.

Другие вопросы по тегам