[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