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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Andrey Sapozhnikov                   2:5020/400     11 Jun 2002  13:48:03
 To : Alan Long
 Subject : Re: вопрос про eval   и tr
 -------------------------------------------------------------------------------- 
 
 Alan Long wrote:
 
 > Я решил эту проблему примерно так:
 > - --
 > sub _setconvert {
 >    my $self = shift;
 >    my $from = $self->_get_convert_from();
 >    my $to = $self->_get_convert_to();
 > 
 >    if( defined $from and defined $to ) {
 >       $self->{CONVERT} = eval "sub { tr/$from/$to/; $_; }";
 >    }
 > }
 > sub convert {
 >    my $self   = shift;
 >    local $_ = shift;
 >    my ( $rc );
 > 
 >    if( defined $self->{CONVERT} and defined $_ ) {
 >       $self->{CONVERT}->();
 >    }
 >    return $_;
 > }
 > - --
 > Hо как мне кажется это не слишком прямое решение, может-быть как-то еще
 > возможно ?
 
 Вполне пормальное решение если ошибки исправить. Явная:
 в строке
 
  >       $self->{CONVERT} = eval "sub { tr/$from/$to/; $_; }";
 
 надо заквотить $_ иначе он подставится еще в момент интерполяции
 строки, что может привести к синтаксической ошибке. (А вообще-то
 его вообще убрать надо, поскольку данная функция меняет $_ и
 ничего не возвращает :-)) ).
 
 И неявная: надо квотить служебные символы в строках $from и $to, если
 только Вы не уверены заранее в их содержимом. См. perldoc -f quotemeta.
 Впрочем в оригинальном коде не квотилось...
 
 Андрей
 
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 вопрос про eval и tr   Alan Long   11 Jun 2002 16:18:57 
 Re: вопрос про eval и tr   Dmitry Koteroff   11 Jun 2002 02:55:13 
 Re: вопрос про eval и tr   Andrey Sapozhnikov   11 Jun 2002 13:48:03 
Архивное /ru.perl/5284af1a2467.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional