[Moscow.pm] regexp и YAML::Tiny

Nikolay Mishin mi на ya.ru
Вт Дек 20 08:59:48 PST 2011


Спасибо Евегений, учту ваши замечания в дальнейшем,
да, так работает
ok 1

20.12.2011, 20:50, "Evgeniy Kosov" <evgeniy на kosov.su>:
> Здравствуйте, Николай.
>
> On 20.12.2011 20:32, Nikolay Mishin wrote:
>
>>  Hi MoscowPM,
>>  коллеги что делать
>>  лежит у меня в yml
>>  ---
>>  tags_4_index:
>>           - '<?xml version="1.0" encoding="UTF-8"?>'
>>           - Rock
>>           - Vocal
>>
>>  я его успешно читаю
>>  use FindBin '$Bin';
>>  my $yaml = YAML::Tiny::LoadFile( $Bin . qq{/} . $config_name );
>>  my @tags = @{ $yaml->{tags_4_index} };
>>  и потом
>>  хочу my $start_tag = shift @{$ref_tags};
>>  1-й параметр использовать в регэкспе:
>>  типа
>>  while ( my $line =<$fh>  ) {
>>  if ( $line =~ /$start_tag/ims ) {
>>  catch($line);
>>     }
>>  }
>>
>>  так вот так не работает, работает, если
>>  $start_tag='\<\?xml version="1.0" encoding="UTF-8"\?\>';
>>  но, если я его таким кладу в yaml, то он мне возвращает (YAML::Tiny)
>>  ### $start_tag: '\\<\\?xml version="1.0" encoding="UTF-8"\\?\\>'
>>  зачем он его еще раз бекслешует?
>
> Я, канеш, извиняюсь, но... Ваши письма мне чем-то напоминают
> Mason'овские компоненты. Такая же сложно читаемая "каша" из кода и
> текста :) Ну, или php3, чтоб далеко не ходить :)
>
> Я это к чему?
> Если бы вы отделяли примеры кода от непосредственно самих вопросов,
> ИМХО, остальным было бы легче понять вопрос и, как следствие, ответить.
>
> По сути вопроса.
>
> Используйте метасимволы \Q и \E при подстановке строки из конфига в
> регулярное выражение. Судя по примерам, в конфиге у вас просто строки, а
> не регулярки.
>
> Как-то так:
>
>   $line =~ /\Q$start_tag\E/;
>
> см. perldoc perlre.
>
> --
> С уважением,
> Евгений Косов
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org

--
Nikolay Mishin


Подробная информация о списке рассылки Moscow-pm