Спасибо Евегений, учту ваши замечания в дальнейшем, да, так работает ok 1
20.12.2011, 20:50, "Evgeniy Kosov" <[email protected]>: > Здравствуйте, Николай. > > 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 > [email protected] | http://moscow.pm.org -- Nikolay Mishin -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
