[Cascavel-pm] Res: Leiitura de arquivos

Otávio Fernandes otaviof em gmail.com
Domingo Abril 18 20:50:25 PDT 2010


2010/4/19 Leonardo Gerheim <general_andrade em yahoo.com.br>:
> Olá Otávio;
>
>     Obraigado pela dica, mas talvez eu tenha me espressado mal. Eu já sabia
> imprimir um arquivo sem passá-lo para um array, mas o que preciso é de algo
> como:
>
> open(FILE, em ARGV[0]);
>
> print FILE[15];  # IMPRIMIR A DÉCIMA QUINTA LINHA DE UM ARQUIVO QUE NÃO É UM
> ARRAY;
>
> um abraço;

Leonardo,

Se você quer imprimir a décima quinta linha de um arquivo, sem tê-lo carregado
em um array, existem _basicamente_ duas formas:

1) Você faz um contador para encontrar a linha desejada;
2) Você usa o método seek: http://perldoc.perl.org/functions/seek.html;

A primeira opção me parece o mais indicado. Vou dar um exemplo:

#!/usr/bin/env perl

use strict;
use warnings;

my $counter = 0;

open( my $FH, '<', '/etc/passwd' )
    or die $!;

while ( my $line = <$FH> ) {
    $counter++;
    next if ( $counter < 15 );
    print $line;
    last;
}

close($FH);

__END__

Agora, como em Perl sempre tem mais de uma maneira de fazer, segue:

#!/usr/bin/env perl

use strict;
use warnings;

my $counter = 0;

open( my $FH, '<', '/etc/passwd' )
    or die $!;

print( (<$FH>)[14] );

close($FH);

__END__

um abraço,

-- 
Otávio Fernandes
otaviof at ( gmail.com, cpan.org )
http://blog.emresumo.com/


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