[Cascavel-pm] Remover elemento de array em arquivo..

Luis Motta Campos luismottacampos em yahoo.co.uk
Quarta Agosto 1 08:02:09 PDT 2007


On Aug 1, 2007, at 4:29 PM, Iberê O. Kuntz de Souza wrote:
>>  1 #!/usr/bin/perl
>>  2 use warnings;
>>  3 use strict;
>>  4 use CGI qw ( :standard );
>>  5 use constant PESQ =>
>>  6              'http://meudominio.com.br/cgi-bin/usuarios/pesq.pl';
>>  7 use constant MARCARUSUARIO =>
>>  8              'http://meudominio.com.br/usuarios/ 
>> marcarusuario.htm';
>>  9 use constant USUARIODELETADO =>
>> 10              'http://meudominio.com.br/usuarios/ 
>> usuariodeletado.htm';
>> 11	
>> 12 ## Abre o arquivo e cria o Handle <USERS>;
>> 13 my $arquivo = '/arquivos/usuarios/users';
>> 14 open ( USERS,$arquivo );
>> 15 my @linhas = <USERS>;
>> 16 close (USERS);
>> 17 my $linhas = "@linhas";
>> 18 ## Recebe o conteudo da variavel $user  do formulario
>> (/var/www/cgi-bin/usuarios/pesq.pl) ;
>> 19 my @user = param ( "usuario" );
>> 20 my @u;
>> 21 foreach (@linhas) {
>> 22 push (@u, $_ ) if $_ !~ /$user[0]/;
>> 23 my $narq = "@u";
>> 24 open ( USERS,"+>$arquivo" );
>> 25 print ( USERS "$narq" );
>> 26 close ( USERS );
>> 27 #Exibe o codigo .htm (USUARIODELETADO) e fecha o else e o foreach;
>> 28 print redirect (USUARIODELETADO);
>> 29 }}
>>
> 1° ) Não recomendo o uso de filehandles, isto já é considerado  
> obsoleto.
> Use variáveis léxicas em seu lugar.

   Isso quer dizer que, ao invés de dizer

     open( USERS, $arquivo );

   Você deveria dizer

     open my $users_filehandle, '<', $arquivo
         or die "Erro tentanto abrir arquivo $arquivo: $!.";

   E, ao invés de dizer

     close(USERS);

   Você deveria dizer

     close $users_filehandle
         or die "Erro tentando fechar o arquivo $arquivo: $!.";

> 2° ) Use a forma de 3 argumentos de open, isto é mais legível e tem  
> mais
> algumas melhorias da qual não lembro (e não sei), mas os mongers  
> amigos
> dirão.

   Isso quer dizer que você tem de usar

     open my $filehandle, $modo, $arquivo
         or die qq{Erro: $!};

   Ao invés de apenas dizer

     open FH, $arquivo;

   A variável "$modo", aqui, pode assumir basicamente dois valores:

     '<' quando você quiser ler coisas do arquivo (é o teu caso)

     '>' quando você quiser escrever coisas no arquivo.

   existem mais modos que você pode consultar, leia o documento  
gerado por

     perldoc -f open

   para saber dos detalhes. ;-)

> Por fim, tem o módulo Tie::File, cuja função é ligar um array à um
> arquivo, isto irá facilitar muito sua vida, embora o pessoal daqui não
> goste de variáveis ligadas (ainda não sei o motivo).
>
> $ perldoc Tie::File

   Eu não sei se este módulo faz parte da distribuição do Perl.  
Talvez você tenha de instalar a bibliteca. É fácil e simples de fazer  
isso, mas você vai ter de aprender a usar o CPAN. www.cpan.org para  
saber mais informações, http://search.cpan.org/ para pesquisar  
pacotes, e 'perldoc CPAN' para aprender como instalar pacotes. :-)

   Espero que isso ajude.
   Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}




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