<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Em 16-03-2011 12:04, Eliane Franco escreveu:
<blockquote
 cite="mid:AANLkTi=Tmt4jsGNyr5rYOseZfByq+rLbHLvPEnbaGsdC@mail.gmail.com"
 type="cite">
  <div>Colega,</div>
  <div><br>
  </div>
  <div>Este texto não segue um padrão de numero de linhas no log?</div>
  <div>O ID pelo que entendi não repete, certo?</div>
</blockquote>
Sim, minha idéia inicial era localizar no arquivo de Log pela linha
onde existe algum tipo de erro e a partir dela (algumas linhas acima)
identificar o Id do Job e a partir daí selecionar todas as linhas do
Log, ou seja, por um início e pelo fim.<br>
<blockquote
 cite="mid:AANLkTi=Tmt4jsGNyr5rYOseZfByq+rLbHLvPEnbaGsdC@mail.gmail.com"
 type="cite">
  <div><br>
  </div>
  <div>Meu olhar é simples, não de mestre. Então, penso que deveria
identificar o ID no texto. E fazer as contas da posicao inicial e
final, ja que saberia o numero de linhas... </div>
  <div>Isso funcionaria, mas não é legal, pq obriga manter um padrão do
log... o correto é ter um inicio e fim identificado mesmo. Estou só
aprendendo tbem.</div>
</blockquote>
Este é o problema, pois nem sempre segue um padrão (de ter sempre o
mesmo número de linhas).<br>
<blockquote
 cite="mid:AANLkTi=Tmt4jsGNyr5rYOseZfByq+rLbHLvPEnbaGsdC@mail.gmail.com"
 type="cite">
  <div><br>
  </div>
  <div>Abraços,</div>
  <div>Eliane</div>
</blockquote>
Mas valeu pelo reply.<br>
Abraço!<br>
<blockquote
 cite="mid:AANLkTi=Tmt4jsGNyr5rYOseZfByq+rLbHLvPEnbaGsdC@mail.gmail.com"
 type="cite">
  <div><br>
  </div>
  <div><br>
  </div>
  <div><br>
  </div>
  <br>
  <br>
  <div class="gmail_quote">Em 14 de março de 2011 20:54, "Flávio R.
Lopes" <span dir="ltr"><<a moz-do-not-send="true"
 href="mailto:flavio.lopes@links.inf.br">flavio.lopes@links.inf.br</a>></span>
escreveu:<br>
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Ok,
obrigado Gabriel.<br>
Estou "juntando" as idéias aqui com base na sugestão do pessoal.<br>
    <br>
Abraço,<br>
Flávio<br>
    <br>
Em 14-03-2011 09:55, Gabriel Andrade de Santana escreveu:
    <div>
    <div class="h5"><br>
    <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
2011/3/13 Tiago Peczenyj<<a moz-do-not-send="true"
 href="mailto:tiago.peczenyj@gmail.com" target="_blank">tiago.peczenyj@gmail.com</a>>:<br>
  <br>
      <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Flavio<br>
        <br>
Imagine que vc quer imprimir todas as linhas entre uma string X e outra
Y.<br>
Pode ser o começo e o fim de um StackTrace Java por exemplo. Vc pode
ter uma<br>
"flag" $imprime quando encontra X e desliga quando encontra Y.<br>
É uma maquina de estados pois vc tem 2 estados definidos: "dentro" e
"fora"<br>
do que vc quer imprimir.<br>
    <br>
      </blockquote>
Esse tipo de comportamento, onde uma flag determina se estamos dentro<br>
ou fora de um intervalo, pode ser emulado utilizando o operador de<br>
intervalo (..) quem em contexto escalar[1][2] age como um flip-flop[3]<br>
armazenando o estado booleano resultante das próximas avaliações.<br>
      <br>
Em if($linha =~ /foo/ .. $linha =~ /bar/) {} o resultado da operação<br>
será sempre verdadeiro a partir do momento em que $linha contiver<br>
"foo" e assim permanecerá através das sucessivas chamadas até que<br>
$linha contenha "bar" e então retornará falso NA PRÓXIMA execução do<br>
teste no bloco if.<br>
      <br>
A solução do Nelson poderia ser (porcamente) reescrita assim:<br>
      <br>
====<br>
use strict;<br>
use warnings;<br>
      <br>
my @buffer;<br>
my $has_error;<br>
      <br>
while (<>) {<br>
  if ( /Starting/ .. /End/ ) { # ainda estamos entre "Starting" e "End"?<br>
    $has_error = 1 if !$has_error&&  m/FAIL|WARNING|ERROR/;<br>
    push @buffer, $_;<br>
  }<br>
  else {<br>
    send_email( \@buffer ), $has_error = 0 if $has_error;<br>
    @buffer = ();<br>
  }<br>
}<br>
      <br>
====<br>
$ perl <a moz-do-not-send="true" href="http://script.pl"
 target="_blank">script.pl</a> arquivo.log<br>
      <br>
Aviso: esse código tem o intuito de somente demonstrar de forma<br>
simplista o uso do operador supracitado e não figura como um todo um<br>
exemplo de boas práticas nem como solução definitiva para o problema.<br>
Cabendo, portanto, ao bom entendedor transformar em algo útil as<br>
minhas meias-palavras. :)<br>
      <br>
      <br>
[1] <a moz-do-not-send="true"
 href="http://perldoc.perl.org/perlop.html#Range-Operators"
 target="_blank">http://perldoc.perl.org/perlop.html#Range-Operators</a><br>
[2] <a moz-do-not-send="true" href="http://tinyurl.com/ybfanvv"
 target="_blank">http://tinyurl.com/ybfanvv</a><br>
[3] <a moz-do-not-send="true"
 href="http://pt.wikipedia.org/wiki/Flip-flop" target="_blank">http://pt.wikipedia.org/wiki/Flip-flop</a><br>
=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a moz-do-not-send="true"
 href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a moz-do-not-send="true"
 href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
 L<<a moz-do-not-send="true"
 href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
      <br>
  <br>
    </blockquote>
    <br>
=begin disclaimer<br>
 Sao Paulo Perl Mongers: <a moz-do-not-send="true"
 href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
SaoPaulo-pm mailing list: <a moz-do-not-send="true"
 href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
L<<a moz-do-not-send="true"
 href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
    </div>
    </div>
  </blockquote>
  </div>
  <br>
  <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
=begin disclaimer
   Sao Paulo Perl Mongers: <a class="moz-txt-link-freetext" href="http://sao-paulo.pm.org/">http://sao-paulo.pm.org/</a>
 SaoPaulo-pm mailing list: <a class="moz-txt-link-abbreviated" href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a>
 L<a class="moz-txt-link-rfc2396E" href="http://mail.pm.org/mailman/listinfo/saopaulo-pm"><http://mail.pm.org/mailman/listinfo/saopaulo-pm></a>
=end disclaimer
  </pre>
</blockquote>
<br>
</body>
</html>