<div class="gmail_quote">Em 13 de março de 2011 01:13, "Flávio R. Lopes" <span dir="ltr"><<a href="mailto:flavio.lopes@links.inf.br">flavio.lopes@links.inf.br</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Olá pessoal, tudo bem?<br>
Seguinte, tenho rodando uma aplicação que gera um arquivo de log no seguinte formato (e que seguem um padrão):<br>
<br>
12-Mar 22:56 Id 100: Starting......<br>
12-Mar 22:56 Id 100: blablablablablablablablablabla<br>
12-Mar 22:56 Id 100: blablablablabla<br>
.<br>
.<br>
.<br>
Id:              100<br>
.<br>
.<br>
.<br>
Status:              OK<br>
.<br>
.<br>
.<br>
12-Mar 22:57 Id 100: blablablablablablabla<br>
12-Mar 22:57 Id 100: blablablablablablablablablablablablabla<br>
12-Mar 22:57 Id 100: End<br>
<br>
13-Mar 22:10 Id 101: Starting......<br>
13-Mar 22:10 Id 101: blablablablablablablablablabla<br>
13-Mar 22:10 Id 101: blablablablablablablablablablablablabla<br>
.<br>
.<br>
.<br>
Id:              101<br>
.<br>
.<br>
.<br>
Status:              ERROR<br>
.<br>
.<br>
.<br>
13-Mar 22:11 Id 101: blablablablablablabla<br>
13-Mar 22:11 Id 101: blablablablablablablablablablablablabla<br>
13-Mar 22:11 Id 101: End<br>
<br>
<br>
Minha idéia é gravar num arquivo, os blocos (trechos) que tiveram album problema (FAIL, WARNING, ERROR) e posteriormente enviar no meu e-mail.<br>
Tomando o exemplo acima, nas linhas referentes a tarefa (ID=101) executada em 13/03, aconteceu algum problema (Status=ERROR). Então gostaria de copiar o bloco compreendido deste o início da linha onde é "startada" a tarefa (13-Mar 22:10 Id 101: Starting......) até a última linha desta tarefa (13-Mar 22:11 Id 101: End)<br>

</blockquote><div><br></div><div>Hum, eu já passei por algo semelhante, eu a cheguei experimentar o Text::Balanced[1], </div><div>mas não me foi muito eficiente, pq minhas "tags" eram um pouco complexas.</div><div>

<br></div><div>Eu resolvi com expressão regular porque meus *arquivos eram pequenos*</div><div><font class="Apple-style-span" color="#3333FF"><br></font></div><div><code conceito></div><div><font class="Apple-style-span" color="#3333FF"><br>

</font></div><div><font class="Apple-style-span" color="#3333FF">my $tags = [</font></div><div><font class="Apple-style-span" color="#3333FF">    {begin => 'FAIL', end => 'END'},</font></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8"><font class="Apple-style-span" color="#3333FF">    {begin => '<meta http-equiv="content-type" content="text/html; charset=utf-8">WARNING', end => 'END'},</font></div>

<div><meta http-equiv="content-type" content="text/html; charset=utf-8"><font class="Apple-style-span" color="#3333FF">    {begin => '<meta http-equiv="content-type" content="text/html; charset=utf-8">ERROR', end => 'END'},</font></div>

<div><font class="Apple-style-span" color="#3333FF"> ];</font></div><div><font class="Apple-style-span" color="#3333FF"><br></font></div><div><font class="Apple-style-span" color="#3333FF">my $log = do { local ( @ARGV, $/ ) = $file; <> };</font></div>

<div><font class="Apple-style-span" color="#3333FF"><br></font></div><div><font class="Apple-style-span" color="#3333FF">foreach (@$tags) {</font></div><div><font class="Apple-style-span" color="#3333FF">    if ($log =~ <span class="Apple-style-span" style="font-family: Arial, 'Helvetica Neue', sans-serif; font-size: 15px; line-height: 19px; ">m{ $tags->[$_]{begin} (.*?)<meta http-equiv="content-type" content="text/html; charset=utf-8">$tags->[$_]{end}}sx){</span></font></div>

<div><font class="Apple-style-span" face="Arial, 'Helvetica Neue', sans-serif" color="#3333FF"><span class="Apple-style-span" style="font-size: 15px; line-height: 19px;">         //  do something with $1</span></font></div>

<div><font class="Apple-style-span" face="Arial, 'Helvetica Neue', sans-serif" color="#3333FF"><span class="Apple-style-span" style="font-size: 15px; line-height: 19px;"></span></font><span class="Apple-style-span" style="color: rgb(51, 51, 255); font-family: Arial, 'Helvetica Neue', sans-serif; font-size: 15px; line-height: 19px; ">    }</span></div>

<div><font class="Apple-style-span" color="#3333FF">}</font></div><div><br></div><div></code></div><div><br></div><div>Se alguém tiver algo mais robusto e elegante, por favor "postaí".</div><div><br></div>

<div><br></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8">[1] <a href="http://search.cpan.org/~adamk/Text-Balanced-2.02/lib/Text/Balanced.pm">http://search.cpan.org/~adamk/Text-Balanced-2.02/lib/Text/Balanced.pm</a></div>

<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
Tentei buscar algum módulo no CPAN, mas acredito que não estou fazendo a busca de forma apropriada.<br>
Alguém pode me dar uma sugestão?<br>
<br>
Abraço,<br>
Flávio<br>
<br>
=begin disclaimer<br>
  Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
</blockquote></div><br>