<div dir="ltr"><div>Caro Leonardo,</div><div><br></div><div>Segue aí uma forma de fazer que acredito ser suficiente para boa parte dos casos…</div><div><br></div><div><code></div><div><div>#!/usr/bin/perl</div><div>use autodie;</div>

<div>use common::sense;</div><div><br></div><div>my @arquivo = qw(arquivo1 arquivo2 arquivo3 );</div><div>$SIG{INT} = sub { close($arquivo[$_]) for (0..$#arquivo); exit(0); };</div><div><br></div><div>main();</div><div><br>

</div><div>sub main {</div><div>        my @pos_arquivo;</div><div>        open($arquivo[$_], '<', $arquivo[$_]) for (0..$#arquivo);</div><div>        TAIL: for (;;) {</div><div>                my $eof;</div><div>

                my @linha_arquivo;</div><div>                $eof ||= eof($arquivo[$_]) for (0..$#arquivo);</div><div>                if ($eof) {</div><div>                   sleep 5;</div><div>                   seek($arquivo[$_], 0, 1) for (0..$#arquivo);</div>

<div>                   next TAIL;</div><div>                }</div><div>                $linha_arquivo[$_] = readline $arquivo[$_] for (0..$#arquivo);</div><div>                my $output;</div><div>                for (0..$#arquivo) {</div>

<div>                        $output = $linha_arquivo[$_] if $linha_arquivo[$_] =~ /CRITICO/;</div><div>                }</div><div>                        $output //= $linha_arquivo[0];</div><div>                print STDOUT $output;</div>

<div>              }</div><div>}</div></div><div></code></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>

<br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">Em 1 de agosto de 2014 10:50, Leonardo Ruoso <span dir="ltr"><<a href="mailto:leonardo@ruoso.com" target="_blank">leonardo@ruoso.com</a>></span> escreveu:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">Em 8 de julho de 2014 10:01, Leonardo Berbert Gomes <span dir="ltr"><<a href="mailto:leoberbert@uol.com.br" target="_blank">leoberbert@uol.com.br</a>></span> escreveu:<div class="">

<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>Amigos,</div>
<div> </div>
<div>Eu preciso da ajuda de vocês para tirar uma pequena dúvida:</div>
<div> </div>
<div>Eu tenho um arquivo que possui a ocorrência de duas strings.</div>
<div> </div>
<div>OK - Arquivos sendo incrementados normalmente</div>
<div>CRITICO - Arquivos não estão sendo incrementados.</div>
<div> </div>
<div>Como estou usando verificando muitos arquivos ao mesmo tempo, existem a ocorrência tanto de OK quanto de crítico.</div></blockquote><div><br></div></div><div>Cada linha corresponde a um registro de informação comum em vários arquivos diferentes de forma que um CRÍTICO na linha 23 sobrescreve um OK na linha 23 de outro arquivo? </div>

<div class="">
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>Agora que vem a dúvida:<br></div>
<div> </div>
<div>* Eu preciso que a ocorrência da string CRITICO, tenha preferência sobre o OK, tipo se eu tiver a ocorrência da string CRITICO, ele exiba as linhas com a ocorrência de critico e não exiba as linhas OK.</div></blockquote>


<div><br></div></div><div>Mas se tem OK para o mesmo número de linha para dois arquivos você mostra qualquer uma das linhas?</div><div class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div>* Caso não encontre a ocorrência da string CRITICO, ele exiba a ocorrência da string OK.</div></blockquote><div><br></div></div><div>Como você sabe qual das duas deve exibir?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div> Alguem tem alguma sugestão?</div></blockquote><div><br></div><div>Os arquivos estão fechados para escrita quando você começa a processá-los ou são arquivos de log e você precisa emudar algo como tail -f em cada arquivo e mantê-los sincronizados?</div>


<div><br></div><div>O que lhe impede de iterar indefinidamente num for (;;;) e ler linha a linha corrente de cada arquivo até que um dos arquivos acabe (ou todos os arquivos acabem?); Essa estragégia ainda habilitaria o processamento contínuo dos arquivos…</div>

<div class="">
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">_______________________________________________<br>
Cascavel-pm mailing list<br>
<a href="mailto:Cascavel-pm@pm.org" target="_blank">Cascavel-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br></blockquote></div></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div>

<br></div>-- <br>Leonardo Ruoso<br>Journalist, Perl developer and business consultant<br>
Media, UFC/2006; Telecom, IFCE/1998
</font></span></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Leonardo Ruoso<br>Journalist, Perl developer and business consultant<br>Media, UFC/2006; Telecom, IFCE/1998
</div>