[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