[SP-pm] Deletar linha atual do arquivo

Solli Honorio shonorio em gmail.com
Terça Novembro 21 16:40:43 PST 2006


Rudolfo, além do exibicionismo dos nossos amigos eu acredito que posso
realizar algus comentário que podem ajudar nos próximos códigos ... afinal
nem sempre vc poderá colocar estes códigos loucos no meio do seu programa ;)

On 11/21/06, Rudolfo rosa <rudolforosa em gmail.com> wrote:

> Galera,
> minha primeira duvida: Como deletar a linha atual de um arquivo ??
> Eu achei uma solucao, mas acredito que nao eh a melhor.
>
> #!/usr/local/bin/perl
>
> $file = arq; #arq tem 4 linhas contendo a b c d
> $new = "$file.tmp.$$";
>
> open(LOGS, $file) or die;
> @log=<LOGS>;
> close(LOGS);


Evite colocar o conteúdo do arquivo num array desta maneira... a menos que
vc tenha *CERTEZA* de que o tamanho o arquivo será sempre pequeno.

Eu recomendo algo como :
<code>
open LOGS, $file or die "Nao consegui abrir o arquivo $file\n" # afinal
mensagem clara é sempre bom
open NEW, "> $new" or die "can't open $new: $!";

# cria um loop lendo todo o arquivo
while ( my $line = <LOGS> ) {
   print NEW, $line if ( $line != /d/ );
}

close LOGS;
close NEW;

rename ($new, $file) or die "can't rename $new to $old: $!";

</code>



> foreach $l (@log){
> #print "current $l";
> $i++;
> if ($l =~ /d/){
> delete @log[$i-1];
> }
> }
> open(NEW, "> $new")         or die "can't open $new: $!";
> foreach $l (@log){
> print NEW $l;
> }
> close(NEW);
> rename($new, $file)          or die "can't rename $new to $old: $!";
>
> Obrigado, Rudolfo.
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/saopaulo-pm/attachments/20061121/89e6cba1/attachment-0001.html 


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