[Cascavel-pm] Res: Leiitura de arquivos

Blabos de Blebe blabos em gmail.com
Segunda Abril 19 04:51:11 PDT 2010


O método seek posiciona o descritor de arquivo no *byte* desejado.
Quando o arquivo é de texto, obter linha x é mais complicado porque
cada linha tem um tamanho arbitrário de bytes.

No fim das contas os métodos e atalhos pra achar a linha x de um
arquivo de texto devem se basear na contagem do caractere "\n".

De um ponto de vista mais baixo nível, achar uma determinada linha num
arquivo de texto é sempre algo meio desajeitado.

Abraços

2010/4/19 Wallace Reis <wallace em reis.org.br>:
> On 19/04/2010, at 00:50, Otávio Fernandes wrote:
>> 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:
>
>
> Outra maneira é usar o contador auto do filehandle com a var "$." ou
> "HANDLE->input_line_number(EXPR)".
>
> --
>   wallace reis/wreis  http://www.linkedin.com/in/wallacereis
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>


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