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

Igor Sutton igor.sutton em gmail.com
Sexta Junho 16 16:18:41 PDT 2006


E se você utilizar uma variável de ambiente?

$ TEST=1 perl -e 'print (($ENV{TEST})?"TESTE!":"PRODUÇÃO"); print "\n"'

Você pode encapsular este teste dentro da função que gera os dados deste
conector, por exemplo. Mas seguindo a sua linha de raciocínio:

<code>
    if ($ENV{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';
    }
</code>

On 6/16/06, Daniel R. Antunes <danielrantunes em yahoo.com.br> wrote:
>
>     Oi Igor, muito grato pela ajuda.
>     Na verdade o módulo G é um "adendo" de um objeto chamado Inq; este
> objeto se comporta diferente de acordo com a informação fornecida em um
> XML e neste caso eu não posso setar na inicialização do objeto pois este
> já existe qdo o módulo G é invocado. Assim como o módulo G eu tenho o T,
> TP, GT e J que se conectam a lugares diferentes com senhas diferentes e
> enviando solicitações em formatos diferentes. O "-t" é uma forma de
> debug na conexão com estes servidores. É realmente complicado. :)
>     Conforme sugestão do caro amigo Flávio eu tentei o INIT e o BEGIN da
> seguinte forma :
>
> 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;
> INIT{
>     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';
>     }
> }
> # Used by parsers
> my %audit_info;
> my %summary_info;
> my %product;
> my $spCode;
>
>     Ambos não funcionaram tbem.
>     Um exemplo de sub dentro do módulo G seria este :
>
> sub construct_T_XML_doc{
>     my $obj=shift;
>     if ($obj->{searchingByID}){
>         $obj->{xml}.="<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
>         $obj->{xml}.="<SByID xmlns=\"http://g.com/webservices/\">\n";
>         $obj->{xml}.="\t<clIdInfo>";
>         $obj->{xml}.=$obj->parse_block("\t\t\t\t<IdInfo id=\"{svccode}\"
> />",'services');
>         $obj->{xml}.="\t</clIdInfo>";
>         $obj->{xml}.="</SByID>\n";
>         $obj->{soapaction}="SByID"
>     }
>     ... <-Aqui ele se conecta usando as variáveis gsubmission_url, etc...
> }
>
>     Se eu coloco o if dentro desta sub (por exemplo) o danado funciona.
>     Neste caso Flávio creio que seja necessário testar a variável "TEST"
> em tempo de execução.
>     Obrigado amigos.
>
>
> Igor Sutton 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 <http://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
> > <mailto: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.
> >
> >
> >
> >
> >
> >
> >
> >     _______________________________________________________
> >     Yahoo! doce lar. Faça do Yahoo! sua homepage.
> >     http://br.yahoo.com/homepageset.html
> >
> >     _______________________________________________
> >     Cascavel-pm mailing list
> >     Cascavel-pm em pm.org <mailto:Cascavel-pm em pm.org>
> >     http://mail.pm.org/mailman/listinfo/cascavel-pm
> >
> >
> >
> >
> > --
> > Igor Sutton Lopes
> > http://www.izut.com/
> >
> >------------------------------------------------------------------------
> >
> >_______________________________________________
> >Cascavel-pm mailing list
> >Cascavel-pm em pm.org
> >http://mail.pm.org/mailman/listinfo/cascavel-pm
> >
>
>
> --
> |---------------------------------------------.---.-\
> | 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! Acesso Grátis - Internet rápida e grátis. Instale
> o discador agora!
> http://br.acesso.yahoo.com
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>



-- 
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/e7f23699/attachment-0001.html 


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