[Cascavel-pm] Ler arquivo - ultimas linhas
Luis Motta Campos
luismottacampos em yahoo.co.uk
Sábado Setembro 1 06:55:37 PDT 2007
On Friday 31 August 2007 23:05, Nelson Ferraz wrote:
> >>> Pessoal.. tem como eu ler as 3 ultimas linhas de um arquivo?? :D
> >
> > system ("tail -3 arquivo");
>
> Rafael,
>
> Tem dois erros aí:
>
> 1) system não retorna os valores do programa externo; para ler o
> resultado você precisaria usar backticks:
>
> my @result = `tail -n 3 arquivo`;
Argh. Funciona, mas é feio.
Tente usar open para a mesma coisa:
open my $programa, '<', '/caminho/para/programa|'
or die $!;
# $programa é um filehandle, leia a saída do seu programa daqui
close $programa or die $!;
Isso é mais elegante e permite tratar melhor os erros, e ainda permite que
você leia a saída do programa em "parcelas" (com sysread(), por exemplo).
Para que você quer ler a saída do programa em "prestações"? Bom, se você
tiver uma saída muito grande, ler à prestação pode economizar MUITA
memória...
> 2) você deve evitar usar chamadas para o sistema (system e backticks)
> quando você pode resolver seu problema em perl.
Tem todo o meu apoio! Não existe um módulo para fazer
seja-lá-o-que-você-quer?
> Na verdade o #2 é mais um alerta do que um erro. Você pode fazer da
> maneira como sugeriu, mas existem soluções melhores.
Onde você leu "soluções melhores", leia "Soluções...":
Mais baratas
Mais simples
Mais elegantes
Mais fáceis de manter
Mais fáceis de extender
Mais rápidas
Mais rentáveis
Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}
Mais detalhes sobre a lista de discussão Cascavel-pm