[Cascavel-pm] edição de arquivos com Perl

Marco Lima marco.lima em e-via.com.br
Quarta Março 23 08:36:05 PST 2005


Salve Alceu !

Existem diversas formas de fazer isso, e se é uma dos motivos que
prefiro Perl do que C !

Mas pela minha minha experência em ETL eu sugiro que vc gere um arquivo
temporário ~<nome do arquivo> para garantir a alteração com sucesso, e
caso necessário realizar um "rollback" no processo.

use File::Temp;   # Vc têm duas situações 1 - antigo para temp e 2 -
novo para temp. 

O ideal é que vc lock o arquivo para que ninguém consiga abrir durante o
processamento.

use Fcntl qw(:flock);   # ;-P Não é fglock !!!

Para realizar o "update" das informações vc poderá utilizar sysread,
sysseek ou seek, syswrite, tell ... são doações do C.

Mas se você o arquivo em questão não contêm a lista de DNA de todos os
animais da terra ... nesse caso vc não teria alternativa pq o @ não
serviria ... eu sugiro readline e print, fica muito mais fácil e a
"performance" é muito boa.

[  ]'s 

> Olá monges,
> 
> Estou com uma dúvida sobre quais as
> vantagens/desvantages de editar uma linha específica
> num arquivo texto. Digamos que eu queira alterar uma
> linha num arquivo qualquer que tenha a palavra
> "senha".
> 
> Eu poderia:
> 
> 1 - Leio o arquivo todo com @conteudo = <ARQUIVO>.
> Depois uso expressões regulares para alterar o
> conteudo do array, finalmente imprimindo esse conteúdo
> no arquivo, sobreescrevendo tudo.
> 
> 2 - usar while(<ARQUIVO>) e usar expressão regular e
> funcões como tell, syswrite para editar a linha
> específica que quero alterar e depois fechar o
> arquivo.
> 
> Alguém já usou o método 2?
> 
> []'s
> 
> 
> Alceu Rodrigues de Freitas Junior
> --------------------------------------
> glasswalk3r em yahoo.com.br
> http://www.imortais.cjb.net
> -----------------------------------------------------------------------
> A well-used door needs no oil on its hinges.
> A swift-flowing stream does not grow stagnant.
> Neither sound nor thoughts can travel through a vacuum.
> Software rots if not used.
> These are great mysteries -- The Tao Of Programming, 5.1
> 
> 
> 	
> 	
> 		
> Yahoo! Mail - Com 250MB de espaço. Abra sua conta!
http://mail.yahoo.com.br/
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
> 
> 


Marco Lima    
J. A. P. H.      
marco.lima em e-via.com.br
mago em rio.pm.org

+55 19 96 56 06 46

Perl Monk
Brasil Perl Monger

http://www.perlmonk.org
http://brasil.pm.org

Register Linux User #355235
Slackware Linux, for the subgenius



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