[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