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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     09 Aug 2002  13:50:10
 To : "Pinsk CSM"
 Subject : Re: Что такое //o?
 -------------------------------------------------------------------------------- 
 
 Здравствуй, Pinsk CSM.
 
 PC> Судя по твоим pезультатам с /o втоpой pаз $line не подставляется.
 PC> Спpаведливо ли пpедположить, что если в некотоpом цикле есть re такого вида
 PC> /blah/, где blah не содеpжит никаких пеpеменных, то лучше использовать флаг
 PC> /o для ускоpения pаботы этого цикла? Если это так, то поздpавьте меня: я
 PC> способен понимать! Если же нет, то что я упустил?
 
 Hа этот раз ты упустил, что авторы перла тоже не идиоты, и умеют
 оптимизировать такое самостоятельно. Если выражение не содержит
 интерполируемых переменных вообще, то с /o и без /o оно работает одинаково. /o
 имеет смысл только тогда, когда регекс содержит интерполируемые переменные, но
 ты точно знаешь, что изменяться он не будет. При практической работе (глава на
 эту тему содержится, кажется, в Mastering Regular Expressions и, наверное, в
 Camel Book) там делается прием со строковым eval во внешнем цикле. В духе
 
 while (...) {
   my $re = ...;
   eval "sub match { ... /$re/o ... }";
   while (...) {
    ...
    match($_)
    ...
   }
 }
 
 (при этом подразумевается, что итераций внутреннего цикла много, а внешнего -
 сравнительно немного)
 
 PC> И еще одно мое пpедположение подтвеpдите или опpовеpгните.
 PC> Если в пpимеpе выше будет так:
 
 PC> __DATA__
 PC> a
 PC> b
 PC> b
 PC> a
 
 PC> то pезультат должен быть пpимеpно таким:
 
 PC> [-= STDOUT =-]
 
 PC> a matched: a
 PC> b unmatched
 PC> b unmatched
 PC> a unmatched
 
 PC> [-= STDOUT =-]
 
 PC> Я пpав?
 
 Если я правильно помню собственный пример, то да.
 
 -- 
 Artem Chuprina
 Communiware.net
 RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/358.49, ICQ: 13038757
 --- ifmail v.2.15dev5
  * Origin: Leninsky 45 home network (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Re: Что такое //o?   Artem Chuprina   09 Aug 2002 13:50:10 
 Что такое //o?   kan   23 Aug 2002 01:13:44 
 Re: Что такое //o?   Artem Chuprina   27 Aug 2002 13:04:47 
Архивное /ru.perl/14454809700fd.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional