[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