[Moscow.pm] Perl 5.10 known bug with (?| ... ) and named captures
Andrew Shitov
andy на shitov.ru
Сб Ноя 24 05:04:00 PST 2007
> Вот не факт, что этот можно легко исправить, как я понял, именованные
> матчи, это всего лишь хэш по нумерованным, и соответственно (?|
> отрабатывает абсолютно правильно, просто именованные матчи на это не
> расчитаны, и их надо в этом случае либо хитро перещитывать, либо
> переписать заново, без завязки на номер позиции.
Почти слово в слово так же говорит Ив Ортон (разработчик regexen) :-)
I concur, and actually off the top of my head I can't see an easy solution.
Named captures are implemented as maps to one or more numbered capture
buffers. And capture buffers in general work by hardmapping an
open/close regop to a given buffer number, normally a 1:1 mapping,
except that branch reset bends the rule so that multiple regops point
at the same buffer. Thus the two are to a certain extent mutually
exclusive.
...
IMO its most definately not something that can be changed in time for release.
Кстати, мы совсем забыли посмотреть на содержимое %-.
'November, 2007' =~ /
(?|
(?<year>\d{4}) (\d\d) (\d\d)
|
(\w+), \s* (?<year>\d{4})
)
/x;
say for @{$-{year}}; # напечатает и November, и 2007.
--
Андрей Шитов
______________________________________________________________________
andy на shitov.ru | http://www.shitov.ru
Подробная информация о списке рассылки Moscow-pm