Summary: | perl 5.12.2 utf8 regexp regression | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Dmitry V. Levin <ldv> |
Component: | perl-base | Assignee: | at <at> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P3 | CC: | at, crux, viy |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Dmitry V. Levin
2010-12-10 03:29:45 MSK
База символов Unicode (и в частности поддержка в регулярных выражениях \p{Cntrl}) вынесена в perl-unicore (In reply to comment #1) > База символов Unicode (и в частности поддержка в регулярных выражениях > \p{Cntrl}) вынесена в perl-unicore А зачем? Я теперь, конечно, добавлю perl-unicore в зависимости пакета gitweb вручную, а кто-то другой даже не догадается. (В ответ на комментарий №2) > (In reply to comment #1) > > База символов Unicode (и в частности поддержка в регулярных выражениях > > \p{Cntrl}) вынесена в perl-unicore > > А зачем? Я теперь, конечно, добавлю perl-unicore в зависимости пакета gitweb > вручную, а кто-то другой даже не догадается. Причина скорее всего в том, что размер установленных данных perl-unicore 8.2Mb, что в два раза больше чем perl-base, при этом используется он весьма редко LANG=C apt-cache whatdepends perl-unicore | awk "/^ \w/" | wc -l 11 LANG=C apt-cache whatdepends perl-base | awk "/^ \w/" | wc -l 1939 С другой стороны действительно perl-base лишён части функционала, который ожидается от perl'а по-умолчанию. Думаю, что было бы правильно обеспечить полную поддержку unicode в базовом пакете, но сделать это надо продуманно. Например, я не совсем понимаю назначение файла /usr/share/perl5/unicore/TestProp.pl (3.5Мб), вероятно он используется только при сборке. Решение может быть в том, чтобы "наиболее часто" используемые файлы из unicore (например, в двух и более пакетах, исключая unicore/Name.pl) положить в perl-base. В perl-5.8 был неплохой набор, но в perl-5.12 перешли на новый unicode database, там изменилось название файлов и расклад по каталогам в unicore/, так что я не успел на скорую руку подобрать удачный комплект файлов. Сейчас этим занялся. Короче у меня созрело такое мнение. Если можно придумать регулярное выражение, которое при сопоставлении с utf8-строкой вытягивает файлы из perl-unicore, то это баг, при условии, что регулярное выражение не содержит unicode properties, или уж совсем какой-нибудь фигни (типа иероглифов). Если же в регулярных выражениях используются unicode properties, то требуется установить пакет perl-unicore. Пример регулярного выражения с unicode properties, Biber/BibTeX/PRD.pm: my $NAME_SEQ_RE = qr/ (?:(?:\p{Lu}\S*|{\p{Lu}\S*})[\s~]*)+ /x ; Здесь \p{Lu} означает \p{General_Category=Uppercase_Letter}. Вот как тестировать какие файлы нужны. $ perl -le 'print shift=~/[[:alnum:]]/' мошонка $ perl -CA -le 'print shift=~/[[:alnum:]]/' мошонка 1 $ filereq /dev/stdout perl -CA -le 'print shift=~/[[:alnum:]]/' мошонка |fgrep /unicore/ /usr/share/perl5/unicore/Heavy.pl /usr/share/perl5/unicore/lib/Perl/Alnum.pl $ perl-1:5.12.3-alt1 -> sisyphus: * Mon Jan 24 2011 Alexey Tourbin <at@altlinux> 1:5.12.3-alt1 - 5.12.2 -> 5.12.3 - merged perl-PerlIO and perl-Storable into perl-base - moved some files from unicore library to perl-base (closes: #24733) - moved Config.pod and POSIX.pod from perl-devel to perl-pod |