LINUX.ORG.RU

[perl] как найти все варианты шаблона встроке с перекрытием

 


0

0

например есть строка "прппооыыы" и шаблон m/.о./gi выдает один результат "поо", а про "ооы" забывает. есть ли простое решение для такого поиска когда нужно найти действительно все варианты шаблона встречающиеся в строке. Заранее спасибо.


Ответ на: комментарий от dilmah

уже только с использованием $&, но хотелось бы чего-нибудь по элегантней возможно с for

Fredy
() автор топика
Ответ на: комментарий от dilmah

Видел это решение в Perl: Сборник рецептов. Там, кстати, говорили что нельзя из этого цикла вываливаться по last; это из-за $1 ?

nikolayd
()
Ответ на: комментарий от nikolayd

не знаю. Я взял это off the top of my head. Не знаю какие проблемы с last.

dilmah ★★★★★
()
Ответ на: комментарий от Fredy

В книге не совсем такой пример, но думается мне, там подразумевается,
случай грепа
"last" cannot be used to exit a block which returns a value such as
"eval {}","sub {}" or "do {}", and should not be used to exit a grep()
or map() operation.

Svoloch ★★★
()
Ответ на: комментарий от Svoloch

Тут греп ни при чём.
Данное правило говорит о том, что last применим к циклам.
while(){} - это цикл, в нём last применим.
eval {}, sub {}, do {}, grep(), map() - это не циклы, тут last не применим.

tzukko
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.