\K

| Комментариев: 3

В регулярных выражениях, доступных в Perl 5.10, появился метасимвол \K, который устанавливает точку «невозврата», до которой строка не должна измениться даже после замен.

Мой коллега порадовал еще раз, применив эту фичу в работе.

my $uri = $ENV{REQUEST_URI};
$uri =~ s{^.+?\K\?.*$}{};

Здесь в переменной $uri оказывается адрес без строки запроса, если она была.

Без использования метасимвола \K подобные замены приходилось делать явно, применяя захват и соответствующие переменные для подстановки:

$uri =~ s{^(.+?)\?.*$}{$1};

В документации замечено, что использование \K намного эффективнее (much more efficient), чем явная замена.

До Perl 5.10 аналогичная функциональность была возможна при подключенном модуле Regexp::Keep.

Комментариев: 3

Интересно, а чем не устраивает конструкция $uri =~ s{\?.*$}{} ?

Тогда просто не понятно - а зачем было использовать сию фичу (\K) в работе?..

Комментировать

Страницы

  • img

Об этой записи

Сообщение опубликовано 16.10.2009 23:50. Автор — ash.

Предыдущая запись — Встреча Братиславы.pm

Следующая запись — Андрей Костенко про ‎DBIx::Class

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