[Moscow.pm] regexp и YAML::Tiny

Nikolay Mishin mi на ya.ru
Вт Дек 20 21:40:51 PST 2011


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" <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