[Cascavel-pm] Re: Digest Cascavel-pm, volume 25, assunto 4

Gabriel Vieira gabriel em webclube.com
Sexta Janeiro 9 12:24:59 CST 2004


Olá Graciliano,

não vejo problemas na estrutura da programação, está bem simples.

No arquivo teste.pl ficam as subrotinas que são usadas por vários outros
scripts. Estes que por sua vez fazem um require do teste.pl para então fazer
uso das subrotinas.
O uso de OO é uma boa, mas não se faz necessário (eu acho). Qual seria a
vantagem?

Valeu ;)

Gabriel Vieira

Diretor Geral
http://www.webclube.com
----- Original Message ----- 
From: "Graciliano M. P." <gmpowers em terra.com.br>
To: <cascavel-pm em mail.pm.org>
Sent: Friday, January 09, 2004 5:36 PM
Subject: [Cascavel-pm] Re: Digest Cascavel-pm, volume 25, assunto 4


> > Tipo, estou com uma dúvida.
> > Existe alguma maneira de apagar os valores de todas as variáveis
> existentes?
> > Algo no estilo undef $*;
> > Sei lá.. é que, como sabem, alguns valores ficam salvo na memória quando
> utilizado o mod_perl e pra evitar que estes valores implicassem em erros
em
> execuções posteriores, preciso tirar tais valores.
> > O uso do my não é viável, já que utilizo um arquivo de complemento com
as
> funções principais e o chamo através do require, e caso eu esteja usando o
> my, as variáveis do arquivo em questão não são > > passadas pro script que
> está sendo executado.
> >
> > Espero ter sido 'entendível' :)
> >
> > Abraços a todos ;)
> >
> > Gabriel Vieira
>
> Vc pode dar uma olhada na função reset(), mas não é muit utilizada, pois
vc
> define uma faixa para os nomes da variáveis. Dê uma olhada em:
> http://www.perldoc.com/perl5.8.0/pod/func/reset.html
>
> Ou podes utilizar uma função que scaneia a tabela de símbolos retornando
> apenas as variáveis globais, e depois dar undef em cada uma:
>
> ## Adaptado de Safe::World::scanpack_table()
> sub scanvars {
>   my ( $packname ) = @_ ;
>
>   $packname .= '::' unless $packname =~ /::$/ ;
>   no strict "refs" ;
>   my $package = *{$packname}{HASH} ;
>   return unless defined $package ;
>
>   no warnings ;
>   local $^W = 0 ;
>
>   my @table ;
>
>   my $fullname ;
>   foreach my $symb ( keys %$package ) {
>     $fullname = "$packname$symb" ;
>     if ( $symb !~ /::$/ && $symb !~ /[^\w:]/ && $symb !~ /^\d$/ && $symb
!~
> /^(?:INC|ENV|SIG|ARGV|_)$/ ) {
>       my $ok ;
>       if (defined $$fullname) { push(@table , "\$$fullname") ; $ok = 1 ;}
>       if (defined %$fullname) { push(@table , "\%$fullname") ; $ok = 1 ;}
>       if (defined @$fullname) { push(@table , "\@$fullname") ; $ok = 1 ;}
>       if (defined &$fullname) { $ok = 1 ;}
>       if (*{$fullname}{IO} && fileno $fullname) { $ok = 1 ;}
>       if (!$ok && $symb !~ /^(?:BEGIN|END|INIT)$/ ) { push(@table ,
> "\$$fullname") ;}
>     }
>   }
>
>   return( @table ) ;
> }
>
> $global_x = 123 ;
>
> my @vars = scanvars('main');
>
> foreach my $vars_i ( @vars ) {
>   eval("undef $vars_i ;") ;
> }
>
>
> Agora quanto a estrutura do seu programa eu a abomino completamente,
> principalmente por ser executado em mod_perl, que foi feito para módulos
OO!
> Procure utilizar Orientação a Objetos, vc vai ver que o mundo pode ser bem
> melhor.
>
> Atenciosamente,
> Graciliano M. P.
>
>
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em mail.pm.org
> http://cascavel.pm.org/mailman/listinfo/cascavel-pm
>




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