Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     03 Mar 2008  20:40:09
 To : Alexander V. Gaiduk
 Subject : Re: баг Перла или баг мозга?
 -------------------------------------------------------------------------------- 
 
 Alexander V. Gaiduk -> Artem Chuprina  @ Mon, 3 Mar 2008 14:57:40 +0000 (UTC):
 
  >> В скалярном контексте модификатор /g оставляет в строке закладку.
  >> Следующий заход на ту же строку начнется с того места, где закончился
  >> предыдущий.  За счет этого работает идиома
  >>
  >> while ($string =~ /.../g)
  >>
  >> if, соответственно, задает скалярный контекст.
 
  AVG> ладно, хорошо, пусть закладка остаётся, в данном случае
  AVG> на конце строки. но ведь дальше начинает выполняться
  AVG> _другой_ регэксп на эту же переменную:
 
  AVG> @array = $g =~ m!<pp>(.+?)</pp>!sg
 
  AVG> почему та закладка тогда не сбрасывается?
 
 Потому что закладка в строке, а не в регекспе.  Именно с тем расчетом,
 чтобы можно было потом пустить туда другой регексп.  Спецсимвол \G
 знаешь?
 
  >> Дальше объяснять?
 
  AVG> было бы здорово, если тока не трудно.
  AVG> блин, век живи - век учись.
 
 m//g в скалярном контексте работает следующим образом.  Он ожидает, что
 следующий регексп (неважно, такой же или другой) ты захочешь начать
 матчить с того места, на котором остановился этот (если он не отматчился
 - то с того места, с которого он начинал).  Потому что если ты этого не
 хотел, то на кой ты писал модификатор g в скалярном-то контексте?
 
 Эта схема позволяет, скажем, довольно удобно разбирать всякие языки.
 
 Применительно к твоему случаю, тебе был бы нужен модификатор g, если бы
 для тебя было важно, что z идет после всех p, а x - до.  При этом еще
 надо было бы отдельно станцевать с \G, если случайно встретившийся до
 всех p z должен считаться ошибкой, а не просто быть тупо проигнорирован.
 А если тебе порядок пофигу, то модификатор ты туда прикрутил по дури, о
 чем тебе perl со свойственной ему лаконичностью :-) и рассказал.
 
 -- 
 Artem Chuprina
 RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru
 
 Вам правду резать или кусочком?
   Кнышев
 
 --- ifmail v.2.15dev5.4
  * Origin: Leninsky 45 home network (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 баг Перла или баг мозга?   Alexander V. Gaiduk   03 Mar 2008 13:12:38 
 Re: баг Перла или баг мозга?   Andrei Protasovitski   03 Mar 2008 13:01:46 
 Re: баг Перла или баг мозга?   Alexander V. Gaiduk   03 Mar 2008 15:17:52 
 Re: баг Перла или баг мозга?   Artem Chuprina   03 Mar 2008 15:58:47 
 Re: баг Перла или баг мозга?   Andrei Protasovitski   03 Mar 2008 16:00:47 
 Re: баг Перла или баг мозга?   Alexander V. Gaiduk   04 Mar 2008 10:53:11 
 Re: баг Перла или баг мозга?   Artem Chuprina   04 Mar 2008 12:38:27 
 Re: баг Перла или баг мозга?   Artem Chuprina   03 Mar 2008 15:50:14 
 Re: баг Перла или баг мозга?   Alexander V. Gaiduk   03 Mar 2008 18:57:40 
 Re: баг Перла или баг мозга?   Artem Chuprina   03 Mar 2008 20:40:09 
 Re: баг Перла или баг мозга?   Alexander V. Gaiduk   04 Mar 2008 11:03:20 
 нескалярный контекст   Dmitry E. Oboukhov   04 Mar 2008 11:17:18 
 Re: нескалярный контекст   Andrei Protasovitski   04 Mar 2008 11:35:52 
 Re: нескалярный контекст   Orlovsky Alexander   04 Mar 2008 19:54:25 
 нескалярный контекст   Dmitry E. Oboukhov   05 Mar 2008 11:15:47 
 Re: нескалярный контекст   Andrei Protasovitski   05 Mar 2008 12:03:22 
 Re: нескалярный контекст   Artem Chuprina   05 Mar 2008 15:37:03 
 нескалярный контекст   Dmitry E. Oboukhov   05 Mar 2008 16:16:07 
 Re: нескалярный контекст   Artem Chuprina   05 Mar 2008 14:13:25 
 нескалярный контекст   Dmitry E. Oboukhov   05 Mar 2008 15:35:14 
 Re: нескалярный контекст   Artem Chuprina   05 Mar 2008 16:45:55 
 нескалярный контекст   Dmitry E. Oboukhov   05 Mar 2008 17:14:55 
 Re: нескалярный контекст   Artem Chuprina   05 Mar 2008 17:43:33 
 нескалярный контекст   Dmitry E. Oboukhov   05 Mar 2008 18:01:33 
 Re: нескалярный контекст   Ilya Anfimov   05 Mar 2008 19:26:07 
 нескалярный контекст   Dmitry E. Oboukhov   05 Mar 2008 19:54:28 
 Re: нескалярный контекст   Ilya Anfimov   05 Mar 2008 20:27:16 
 нескалярный контекст   Dmitry E. Oboukhov   05 Mar 2008 22:10:22 
 Re: нескалярный контекст   Artem Chuprina   04 Mar 2008 12:51:37 
Архивное /ru.perl/53218f7dbc2f6.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional