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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     16 Jul 2002  15:52:05
 To : "Dmitry Koteroff"
 Subject : Re: Регексп - замена по хешу.
 -------------------------------------------------------------------------------- 
 
 Здравствуй, Dmitry Koteroff.
 
 DK> Здравствуйте, Roman.
 DK> 15 июля 2002 года, понедельник, 11:01. Вы написали:
 
 DK> > Есть хеш с парами "что менять"=>"на что менять".
 DK> > Hапример, аббревиатуры заменять на код их расшифровки или ключевые
 DK> > слова на ссылки на них. Менять надо всюду, кроме внутренностей ссылок и
 DK> > тэгов.
 DK> Это довольно стандартная задача, в общем случае (для тысяч регулярных
 DK> выражений) решается при помощи создания замыканий (предварительной
 DK> компиляции кода):
 
 DK> %regexps = (
 DK>     qr/тра/is => "ТрА",
 DK>     qr/ля/is  => "лЯ",
 DK> );
 
 DK> # сначала компилируем несколько функций - по одной
 DK> # для каждого выражения.
 DK> my @func=();
 DK> while(my ($re,$to)=each(%regexps)) {
 DK>   push @func, sub { s/$re/$to/sg };
 DK> }
 
 А ты пробовал? А то тут ругается "Modification of a read-only value attempted"
 
 DK> # затем читаем строки по одной и заменяем.
 DK> while(<>) {
 DK>     # проходим по всем выражениям и заменяем их в $_
 DK>     foreach my $f (@func) { &$f() }
 DK>     print $_;
 DK> }
 
 Логичнее будет скомпилировать в одну функцию. А то накладные расходы на вызов
 рискуют подавить преимущества от прекомпиляции.
 
 -- 
 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)
 
 

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

 Тема:    Автор:    Дата:  
 Регексп - замена по хешу.   Roman =KRoN= Karshiev   15 Jul 2002 15:01:02 
 Re: Регексп - замена по хе шу.   Andrey Sapozhnikov   15 Jul 2002 18:27:08 
 Re: Регексп - замена по хешу.   Dmitry Koteroff   16 Jul 2002 01:35:25 
 Re: Регексп - замена по хешу.   Roman =KRoN= Karshiev   16 Jul 2002 11:07:16 
 Re: Регексп - замена по хешу.   Artem Chuprina   16 Jul 2002 15:52:05 
 Re: Регексп - замена по хешу.   Dmitry Koteroff   16 Jul 2002 18:22:18 
 Re: Регексп - замена по хе шу.   Andrey Sapozhnikov   16 Jul 2002 19:01:30 
 Re: Регексп - замена по хешу.   Roman =KRoN= Karshiev   16 Jul 2002 20:04:51 
 Re: Регексп - замена по хе шу.   Andrey Sapozhnikov   16 Jul 2002 20:38:41 
Архивное /ru.perl/1445454a9fa78.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional