[Cascavel-pm] Teste de variável na inicialização de um módulo.

Igor Sutton igor.sutton em gmail.com
Sexta Junho 16 12:17:12 PDT 2006


Hum... Se bem que uma solução melhor para o seu problema seria passar a flag
na inicialização do seu objeto:

<code>
use G;

my $g = G->new(test => $test);
$g->run();
</code>

Igor.

On 6/16/06, Igor Sutton <igor.sutton em gmail.com> wrote:
>
> Daniel,
>
> Segue um exemplo:
>
> t.pl:
> <code>
> use strict;
> use warnings;
>
> use G;
>
> # é necessário para que o módulo G possa enxergar a variável.
> our $TEST = 1;
>
> G->run();
> </code>
>
> G.pm:
> <code>
> package G;
>
> sub run {
>     my $instance = "live";
>     $instance = "test" if ($main::TEST);
>     print "$instance\n";
> }
> 1;
> </code>
>
> Então, o *our* é necessário para que a variável possa ser vista fora do
> escopo do pacote main.
>
> Espero que ajude.
>
>
> On 6/16/06, Daniel R. Antunes <danielrantunes em yahoo.com.br> wrote:
> >
> >     Olá amigos da lista...
> >     Eu postei esta mensagem no "perl-br" mas infelizmente ninguém
> > respondeu, desculpem se minha pergunta for obvia por demais, mas é uma
> > dificuldade que estou tendo e não conseguindo resolver. Eu venho da
> > linguagem C/C++ e ainda apanho com alguns aspectos do Perl, principalmente
> > as questões relacionadas a namespaces, variáveis de pacote, escopos léxicos,
> > enfim... Acho que tenho me saido bem na migração, mas... Obs: Eu encomendei
> > o livro "Perl for C programmers" para ver se paro de encher a paciência dos
> > amigos com estas perguntas. :)
> >     Bom, vamos ao problema que estou tendo :
> >
> > package modules::G;
> > require Exporter;
> > use strict;
> > use LWP::UserAgent;
> > use funcs;
> > # Export some symbols
> > our @ISA                =    qw(Exporter);
> > our @EXPORT            =    qw(    &construct_G_XML_doc
> >                                             submit_G
> >                                             &g_start
> >                                             &g_char
> >                                             &g_end);
> > our @EXPORT_OK    =    qw();
> > our $VERSION        =    0.01;
> > # Global variables
> > my $false=0;
> > my $true=1;
> > my $gsubmission_url;
> > my $gretrieval_url;
> > my $glogin;
> > my $gpass;
> > # Used by parsers
> > my %audit_info;
> > my %summary_info;
> > my %product;
> > my $spCode;
> >
> >     Isto faz parte do módulo G de meu sistema (um daemon) e está
> > funcionando
> > perfeitamente.
> >     Mas... Eu tenho uma variável chamada TEST que é setada na
> > inicialização do serviço usando "-t", o getopt pega esta informação e
> > torna o TEST true ou false, isto está no main; eu gostaria de testá-la
> > no ponto inicial deste módulo assim :
> >
> > if ($main::TEST){
> >    $gsubmission_url='http://url/de/testes';
> >    $gretrieval_url=' http://url/de/testes/RetrieveListenerServlet';
> >    $glogin='LOGIN';
> >    $gpass='PASS';
> > }
> > else{
> >    $gsubmission_url='http://url/live';
> >    $gretrieval_url=' http://url/live/RetrieveListenerServlet';
> >    $glogin='LOGIN_OFICIAL';
> >    $gpass='SENHA_OFICIAL';
> > }
> >
> >     Mas eu não estou conseguindo, ele sempre entra no else por que o
> > main::TEST
> > não existe neste ponto (inicio do módulo), eu utilizo o "strict" e o
> > "-w" na inicialização do serviço, no entanto nenhum erro é reportado. Se eu
> > coloco em qualquer das subs do módulo funciona, e é
> > como está por hora.  :(
> >     Alguém poderia me ajudar ?
> >     Desde já muito obrigado.
> >
> >
> > --
> > |---------------------------------------------.---.-\
> > | Daniel R. Antunes (Profiss. de informática) )\-/( |
> > | ...... www.daniel-antunes.com.br (Web Site) (OvO) |
> > | ... danielrantunes em sorria.com.br (M$Nmsger) (( )) |
> > |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"~"~~|
> > | ICQº 107888741 ~ GNU/Linuxº 238553 ~ GotNiX 'ÜÜÜ' |
> > \---------------------------------------------------|
> >
> >
> >
> >
> >
> >
> > _______________________________________________________
> > Yahoo! doce lar. Faça do Yahoo! sua homepage.
> > http://br.yahoo.com/homepageset.html
> >
> > _______________________________________________
> > Cascavel-pm mailing list
> > Cascavel-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/cascavel-pm
> >
>
>
>
> --
> Igor Sutton Lopes
> http://www.izut.com/
>



-- 
Igor Sutton Lopes
http://www.izut.com/
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20060616/15ad097b/attachment.html 


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