|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Ruslan Sulemanov 2:4635/1024.27 25 Feb 2003 13:37:16 To : Artem Chuprina Subject : prog error --------------------------------------------------------------------------------
RS>>>> sub soonpos
RS>>>> {
RS>>>> undef $word;
RS>>>> local $word=shift @_;
RS>>>> $_=$fullpaga; # $fullpaga - весь текст в одной строке
RS>>>> while(/$word/gc) # $word - слово из текста
RS>>>> {
RS>>>> undef $fopos;
RS>>>> $fopos= pos;
RS>>>> $poswd.=$fopos." "; <----- цыклит на этой строке
AC>>> "цыклить" на этой строке не может, поскольку в ней нет цикла.
AC>>> Циклиться можно на while, и ничего удивительного я в этом не вижу,
AC>>> если у тебя в $_ есть вхождение $word. Ибо в скалярном контексте
AC>>> проверка каждый раз идет с начала строки. А кому надо начиная с
AC>>> pos(), те вставляют в регекс \G (perldoc perlre).
RS>> ошибка была из-за того что некоторые значения в $word
RS>> были пyстой строкой, поэтомy цыклило.
RS>> p.s \G ссылается на текyщyю позицию поиска, а мне надо начинать
RS>> сначала строки, тоесть \G дyмаю здесь ненyжен.
AC> У тебя цикл не по строкам, а по вхождениям $word, так что если каждый
AC> раз
AC> начинать с начала, он будет вечным. Или я чего-то не понимаю... Впрочем,
AC> пустые варианты - тоже вариант. Я про него подумал, но не написал, а зря -
AC> это ж не split, оно може само и не двигать курсор. Hе помню уже, в каких
AC> случаях он автомагически движется при пустом матче.
модификатор /g имеет дополнительные свойства при поиске вместе
со спец.переменной $_ стоящей слева от модификатора, она полyчает
последнее состояние поиска, и при каждом обращение к цыклy(к кодy)
поиск бyдет продолжаться с того места, на котором он остановился
в последний раз и так до конца $_, если шаблон при первой проверке
в цыкле небyдет найден, то цыкл просто завершается.
RSR
--- GoldED+/386 1.0.0
* Origin: E-mail: support@icu.net.ua (2:4635/1024.27)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/45933e5b6685.html, оценка из 5, голосов 12
|