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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Andrey Sapozhnikov                   2:5020/400     23 Jan 2002  19:30:19
 To : Artem Chuprina
 Subject : Re: interpolation
 -------------------------------------------------------------------------------- 
 
 Artem Chuprina wrote:
 
 > Здравствуй, Juri Milodanovic.
 > 
 > JM> Как лучше преобразовать неинтерполируемую переменную в интерполируемую?
 > JM> Пока делаю так:
 > 
 > JM> $str = 'Hello.\n\n\n';
 > JM> print $str;
 > JM> # prints: Hello.\n\n\n
 > 
 > JM> $str = eval "qq/$str/";
 > JM> print $str;
 > JM> # prints: Hello.
 > JM> #
 > JM> #
 > 
 > JM> А какие-нибудь другие способы есть?
 > 
 > Более прямых - точно нету. Собственно, по одной причине - интерполируемых
 > переменных в perl не бывает. Бывают интерполируемые строковые константы. Что
 > совсем не одно и то же.
 
 Вышеприведеный способ (eval "qq/$str/") поломается если в $str встретится /,
 та же история может быть и с другим разделителем. Выход - заквотить
 встретившийся разделитеть:
 
 my $a = 'aaaa';
 my $str = 'Hello / $a @{[ 1 / 2 ]}';
 
 $str =~ s/\//\\\//g;
 $str = eval "qq/$str/";
 
 теперь $str содержит "Hello / aaaa 0.5"
 
 Андрей
 
 P.S. Если вам где-либо пришлось использовать подобный код, с
 вероятностью 99.9% вы недопонимаете как правильно, эффективно и
 акуратно решать задачи в Perl. И лучшим решением будет пересмотреть
 сам подход к проблеме.
 
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 interpolation   Juri Milodanovic   23 Jan 2002 08:23:43 
 Re: interpolation   Artem Chuprina   23 Jan 2002 12:38:33 
 Re: interpolation   Andrey Sapozhnikov   23 Jan 2002 19:30:19 
 interpolation   Juri Milodanovic   24 Jan 2002 14:20:49 
Архивное /ru.perl/5284cf62e8a4.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional