[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