[Cascavel-pm] get/set com AUTOLOAD

Luis Campos de Carvalho monsieur_champs em yahoo.com.br
Quarta Dezembro 28 09:14:14 PST 2005


--- "Alceu R. de Freitas Jr." escreveu:
> --- Joenio Marques <joenio em gmail.com> escreveu:
> > Numa outra classe faço isso:
> > 
> > $url =~ /id=(.+?)&/;
> > $obj->codigo($1);
> > 
> > $obj é uma instancia da minha classe com AUTOLOAD
> > e codigo é um dos atributos da classe.
> > 
> > Mas isso não esta funcionando, o atributo não é
> > setado.
> > Fazendo da forma abaixo funciona:
> > 
> > $url =~ /id=(.+?)&/;
> > $obj->codigo("$1"); #note aspas
> > 
> > OU
> > 
> > $url =~ /id=(.+?)&/;
> > $cod = $1;
> > $obj->codigo($cod);
> 
> Eu já tive esse problema... o porque acontece eu não
> sei, mas tem a ver com a variável global $1 e não com
> AUTOLOAD. Eu já tive esse problema fazendo coisas mais
> simples, como usar usar o operador "?:".
> 
> Talvez porque, para cada escopo diferente, deve
> existir um $1. Ou seja, cada tabela de símbolos deve
> ter seu $1 e demais irmãos. Só não sei se estou
> correto ou não, isso é um chute.

  NÃO!!! Variáveis especiais tem escopo GLOBAL!!!
  Você precisa usar programação defensiva (declare todas as suas variáveis especiais como "local"
antes de começar a usar).

  Eu não tive tempo de olhar seu código.
  Se isso não corrigir o problema, por favor me contate e me envie mais código.

  Putamplexos!

--
Luis Campos de Carvalho
Member of "São Paulo Perl Mongers",
Unix SysAdmin & OCP/DBA Oracle


	



	
		
_______________________________________________________ 
Yahoo! doce lar. Faça do Yahoo! sua homepage. 
http://br.yahoo.com/homepageset.html 



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