[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