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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Alexander Babanov                    2:5020/5609.69 01 Jun 2001  19:43:22
 To : Yuriy Kaminskiy
 Subject : Re: reg exp again
 -------------------------------------------------------------------------------- 
 
 Юґullo Yuriy!
 
  MK>> Такая вот поблема: можно  ли набор команд вида
  MK>> $x=~ s/$a/$b/g;
  MK>> $x=~ s/$a1/$b1/g;
  MK>> .........
  MK>> $x=~ s/$an/$bn/g;
  MK>> заменить на одну, чтоб избежать многократного анализа $x.
  YK>  %rep = ($a => $b, $a1=>$b1, ..., $an => $bn);
  YK>  $rep = join("|", keys %rep);
  YK>  $x =~ s/$rep/$rep{$&}/go;
  YK>  Будет ли это эффективнее - зависит от $a...$an. Посмотри при помощи
  YK>  use Benchmark;
 
 А может не надо? Во-первых, быстрее не будет из-за откатов (см. Ларри).
 Во-вторых, набор команд надо генерить и eval на него - принцип "самые
 счастливые программы те, которые пишут другие программы" (опять же Ларри).
 
 @a = ("a", "b", "c");
 @b = ("x", "y", "zz");
 $r .= "s/$a[$_]/$b[$_]/g;" for 0..$#a;
 $_ = "cab";
 eval $r;
 print;
 
 CYa!!!
 
 ЪДВїЪДВВВДДДщщъъ ЪДВВВДї ЪїЪДВДДДДДДДДщщъъ   ЪДДДД 2:5020/5609.69 ДДДї
 іВіАґДЕ ґBabanov іВі ґВі іАґВіST BERSERKER   і babanov@earthlink.net і
 ... Еще наше поколение будет жить при Виагре! [предп. из писем Ильича к HКК]
 ---
  * Origin: Our governor can beat up your governor! (2:5020/5609.69)
 
 

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

 Тема:    Автор:    Дата:  
 Re: reg exp again   Yuriy Kaminskiy   31 May 2001 14:25:12 
 Re: reg exp again   Alexander Babanov   01 Jun 2001 19:43:22 
Архивное /ru.perl/47303b1838aa.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional