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

Flavio S. Glock fglock em gmail.com
Sexta Junho 16 12:30:51 PDT 2006


Isso resolve?
---
package A;

INIT {
    print $main::T;
}

package main;

BEGIN {
    our $T = "ok\n";
}
---
Blocos INIT são executados somente depois que toda a compilação
termina; blocos BEGIN são executados durante a compilação.

- Flavio S. Glock

Em 16/06/06, Daniel R. Antunes<danielrantunes em yahoo.com.br> escreveu:
>     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
>


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