|
|
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)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/47303b1838aa.html, оценка из 5, голосов 10
|