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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Alexander V. Gaiduk                  2:5020/400     04 Mar 2008  11:03:20
 To : Artem Chuprina
 Subject : Re: баг Перла или баг мозга?
 -------------------------------------------------------------------------------- 
 
 > >> В скалярном контексте модификатор /g оставляет в строке закладку.
 > >> Следующий заход на ту же строку начнется с того места, где закончился
 > >> предыдущий.  За счет этого работает идиома
 > >>
 > >> while ($string =~ /.../g)
 > >>
 > >> if, соответственно, задает скалярный контекст.
 >
 > AVG> ладно, хорошо, пусть закладка остаётся, в данном случае
 > AVG> на конце строки. но ведь дальше начинает выполняться
 > AVG> _другой_ регэксп на эту же переменную:
 >
 > AVG> @array = $g =~ m!<pp>(.+?)</pp>!sg
 >
 > AVG> почему та закладка тогда не сбрасывается?
 >
 > Потому что закладка в строке, а не в регекспе.  Именно с тем расчетом,
 > чтобы можно было потом пустить туда другой регексп.  Спецсимвол \G
 > знаешь?
 
 фигасе!
 хотя это ведь правильно, и удобно, блин!
 теперь надо еще и это иметь в виду :)
 
 > >> Дальше объяснять?
 >
 > AVG> было бы здорово, если тока не трудно.
 > AVG> блин, век живи - век учись.
 >
 > m//g в скалярном контексте работает следующим образом.  Он ожидает, что
 > следующий регексп (неважно, такой же или другой) ты захочешь начать
 > матчить с того места, на котором остановился этот (если он не отматчился
 > - то с того места, с которого он начинал).  Потому что если ты этого не
 > хотел, то на кой ты писал модификатор g в скалярном-то контексте?
 
 да лопухнулся я с //g.
 оказывается Ларри более глубоко продумал язык, чем мне казалось :)
 
 > Эта схема позволяет, скажем, довольно удобно разбирать всякие языки.
 >
 > Применительно к твоему случаю, тебе был бы нужен модификатор g, если бы
 > для тебя было важно, что z идет после всех p, а x - до.  При этом еще
 > надо было бы отдельно станцевать с \G, если случайно встретившийся до
 > всех p z должен считаться ошибкой, а не просто быть тупо проигнорирован.
 > А если тебе порядок пофигу, то модификатор ты туда прикрутил по дури, о
 > чем тебе perl со свойственной ему лаконичностью :-) и рассказал.
 
 ага.
 
 спасиб за разьяснения.
 
 > -- 
 > Artem Chuprina
 > RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru
 
 -- 
 С уважением, Александр Гайдук, вебмастер мэрии Архангельска
 $_='p<5H1>45BO&]Ov194E;Ok71Fo1B839DI]BEm';tr#\x20-~#P-~\x20-O#;print;
 
 --- ifmail v.2.15dev5.4
  * Origin: Demos online service (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/338792dc73681.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional