1. попрошу не оскорблять сравнением c php3 и mason (хотя извинения и были, но это похоже, как в собаке Баскервилей, доктор Джеймс Мортимер назвал мистера Шерлока Хомса вторым сыщиком, но конечно первым среди практиков. что его, несомненно, задело ) 2. я хотел показать ход своих мыслей, которых, как оказалось, было достаточно, что вы поняли о чем вопрос, для меня некоторые из этих строк родились в муках и были своего рода открытием и, поэтому мне хотелось ими поделиться 3. работающим кодом мне запрещено делиться по контракту, кроме того я и сам еще не созрел, чтобы им делиться (уж простите) 4. писать тест с работающим кодом и отвязанным от "действительности" не было сил 5. "русский тест" в общем -то и так себя выделает, как и "perl код" и , в данном случае, я хотел, чтобы вся фраза была не длиннее 20 строк - излишние пробелы (как-бы меня не уверяли приверженцы python) тоже не способствуют читаемости, если приходиться скролить страницы 6. да, пары переводов строк моему тексту не помешали бы, но они у меня (пустые строки для читаемости) все-таки были 7. я занимаюсь рефакторингом и тестированием все время и тоже являюсь приверженцем читаемости кода до предела (после того, как все работает и понятно - можно запустить профайлер
set PERL5DB='use Devel::NYTProf' set NYTPROF=trace=2:start=init:file=nytprof.out:addpid=1:start=begin perl -d:NYTProf 12_index.t nytprofhtml nytprof/index.html #отчет http://blog.timbunce.org/2009/12/24/nytprof-v3-worth-the-wait/ http://www.slideshare.net/Tim.Bunce/develnytprof-200907 http://blip.tv/timbunce/nytprof-v3-ipw-2009-2860609) моим идеалом, в частности, является https://github.com/xsawyerx/module-starter/blob/master/bin/module-starter gratias p.s. ora at labora 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
