[Cascavel-pm] Descartar Linha arquivo
Nelson Ferraz
nferraz em gmail.com
Quarta Abril 28 06:59:43 PDT 2010
> open(FILE,"<$ar") or die "Can't create file\n";
> my $linha =<FILE>; -----> descarta
> $linha=<FILE>; -----> descarta
> $linha =<FILE>; -----> descarta
> $linha=<FILE>; -----> descarta
> while (<FILE>)
> {
> my ( $t1, $t2, $t3) =( split /\s/ )[1, 2, 3];
> }
>
> close (FILE);
Esta é uma maneira correta de se fazer -- não é particularmente
elegante, mas é correta. (E não conheco um idioma mais apropriado).
Se o arquivo for pequeno, e você puder colocá-lo como uma array, você
pode simplesmente usar o slice apropriado.
for (@file[3..$#file]) {
# ...
}
Você pode tratar um arquivo como um array sem colocá-lo inteiro na
memória, usando o Tie::File. Mas suspeito que seja menos eficiente do
que simplesmente saltar as linhas iniciais.
> OBS: Esse jeito de abrir arquivo esta correto?? é o jeito mais eficiente??
É melhor usar o open com três parâmetros, que cria uma variável léxica
ao invés de um filehandle global:
open my $fh, '<', "$ar" or die "Can't read file\n";
while ( <$fh> ) {
# ...
}
close $fh;
Imagine se qualquer módulo que você usa tivesse a bela idéia de usar o
filehandle <FILE>, que é global... este é o problema que o open com
três parâmetros procura evitar.
Mais detalhes sobre a lista de discussão Cascavel-pm