Здравствуйте, Николай.
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