[Cascavel-pm] Variável de outro namespace no escopo global do package.

Luis Motta Campos luismottacampos em yahoo.co.uk
Terça Julho 17 00:36:03 PDT 2007


On Jul 16, 2007, at 11:57 PM, Daniel ® Antunes wrote:
>     Oi amigos, boa noite.
>     É o seguinte :
>
>     package supplier;
>     print $main::TEST;
>
>     Resulta em :
>
>     Use of uninitialized value in print at /home/daniel/bin/inquiry- 
> server-2/Inquiry.pm line 64
>
>     Porém :
>
>     package supplier;
>     sub teste{
>         print $main::TEST;
>     }
>
>     Funciona normalmente, imprime o valor da variável TEST que é  
> declarada via Getopt no script principal.
>
>     A diferença que eu vejo é que no primeiro caso a tentativa de  
> usar a variável está no escopo global do package (que é o que eu  
> quero, declarar um hash dependendo da condição $main::TEST) e no  
> segundo caso dentro de uma sub.
>     O package supplier está dentro de um .pm separado do script  
> principal.
>     Minha dúvida é : Como consigo enxergar a variável de um outro  
> namespace no escopo global do package ?
>     Teria eu que exportar o TEST no script principal para este  
> package ou vice-versa (importar o TEST no package supplier) ?
>     Obrigado novamente, um abraço.


   Diversas observações:

   1. Você quer configurações. Use o Config::General, meu favorito.  
Ou qualquer outro módulos sob o namespace Config::*.
   2. O PBP diz que a gente não deve manter variáveis globais, ou  
hash tables que são utilizados como "saco de variáveis" passado de um  
lado para outro. Se você precisa enxergar uma variável noutro pacote,  
tenha certeza de que o outro pacote espera isso (e receba a variável  
por cópia durante a inicialização ou a cada chamada).
   3.Prestatenção na ordem de execução. Código solto dentro de um  
pacote é executado normalmente uma vez, quando você diz "use  
Package". Caso não seja esta a intenção (nunca é), tente de outra forma.

   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