[Cascavel-pm] Ajuda prioridade if

Leonardo Ruoso leonardo em ruoso.com
Sexta Agosto 1 09:22:03 PDT 2014


Ou: https://gist.github.com/leonardoruoso/e21eae8603653dabfd93


Em 1 de agosto de 2014 11:47, Leonardo Ruoso <leonardo em ruoso.com> escreveu:

> Caro Leonardo,
>
> Segue aí uma forma de fazer que acredito ser suficiente para boa parte dos
> casos…
>
> <code>
> #!/usr/bin/perl
> use autodie;
> use common::sense;
>
> my @arquivo = qw(arquivo1 arquivo2 arquivo3 );
> $SIG{INT} = sub { close($arquivo[$_]) for (0..$#arquivo); exit(0); };
>
> main();
>
> sub main {
>         my @pos_arquivo;
>         open($arquivo[$_], '<', $arquivo[$_]) for (0..$#arquivo);
>         TAIL: for (;;) {
>                 my $eof;
>                 my @linha_arquivo;
>                 $eof ||= eof($arquivo[$_]) for (0..$#arquivo);
>                 if ($eof) {
>                    sleep 5;
>                    seek($arquivo[$_], 0, 1) for (0..$#arquivo);
>                    next TAIL;
>                 }
>                 $linha_arquivo[$_] = readline $arquivo[$_] for
> (0..$#arquivo);
>                 my $output;
>                 for (0..$#arquivo) {
>                         $output = $linha_arquivo[$_] if $linha_arquivo[$_]
> =~ /CRITICO/;
>                 }
>                         $output //= $linha_arquivo[0];
>                 print STDOUT $output;
>               }
> }
> </code>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> Em 1 de agosto de 2014 10:50, Leonardo Ruoso <leonardo em ruoso.com>
> escreveu:
>
> Em 8 de julho de 2014 10:01, Leonardo Berbert Gomes <leoberbert em uol.com.br
>> > escreveu:
>>
>> Amigos,
>>>
>>> Eu preciso da ajuda de vocês para tirar uma pequena dúvida:
>>>
>>> Eu tenho um arquivo que possui a ocorrência de duas strings.
>>>
>>> OK - Arquivos sendo incrementados normalmente
>>> CRITICO - Arquivos não estão sendo incrementados.
>>>
>>> Como estou usando verificando muitos arquivos ao mesmo tempo, existem a
>>> ocorrência tanto de OK quanto de crítico.
>>>
>>
>> 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?
>>
>>
>>> Agora que vem a dúvida:
>>>
>>> * 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.
>>>
>>
>> Mas se tem OK para o mesmo número de linha para dois arquivos você mostra
>> qualquer uma das linhas?
>>
>>
>>> * Caso não encontre a ocorrência da string CRITICO, ele exiba a
>>> ocorrência da string OK.
>>>
>>
>> Como você sabe qual das duas deve exibir?
>>
>>
>>>  Alguem tem alguma sugestão?
>>>
>>
>> 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?
>>
>> 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…
>>
>> _______________________________________________
>>> Cascavel-pm mailing list
>>> Cascavel-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/cascavel-pm
>>>
>>
>>
>>
>> --
>> Leonardo Ruoso
>> Journalist, Perl developer and business consultant
>> Media, UFC/2006; Telecom, IFCE/1998
>>
>
>
>
> --
> Leonardo Ruoso
> Journalist, Perl developer and business consultant
> Media, UFC/2006; Telecom, IFCE/1998
>



-- 
Leonardo Ruoso
Journalist, Perl developer and business consultant
Media, UFC/2006; Telecom, IFCE/1998
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20140801/86eab2f8/attachment.html>


Mais detalhes sobre a lista de discussão Cascavel-pm