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

"Iberê O. Kuntz de Souza" kuntzzz em gmail.com
Quarta Agosto 1 07:29:06 PDT 2007


>
> Preciso de uma ajuda!!!!! 
> A variável "@user", linha 19,  recebe os valores de um outro 
> código(Pesq.pl).. Esses valores são enviados quando o usuário marca os 
> checkbox no 
> código "pesq.pl". O problema é que quando os usuários marcam mais de um 
> checkbox, apenas o valor do primeiro é excluido no 
> arquivo "users" -> '/arquivos/usuarios/users'. Para tentar resolver o 
> problema, criei um array com os valores de "usuario" 
> na linha 19, no entanto, não consigo fazer o código verificar cada elemento 
> e exclui-lo..Na linha 22 deixei /$user[0]/ só 
> para não dar erro na hora de executar o código.. Resumindo, preciso remover 
> do arquivo "users" todos os valores que forem 
> selecionados nos checkbox do código "pesq.pl".. 
>
>  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.
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.

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

Happy Hack! :)


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