[Cascavel-pm] Constant Functions

Eden Cardim edencardim em gmail.com
Sexta Julho 11 08:28:37 PDT 2008


2008/7/11 Daniel (R) Antunes <danielrantunes em yahoo.com.br>:
>    Bom dia amigos...
>    Estou utilizando "constant functions" em uma série de módulos. Estes
> módulos têm basicamente a mesma função, mas consultam lugares diferentes,
> têm alguns comportamentos diferentes e o retorno deles é diferente, tudo é
> tratado e agrupado após o retorno.
>     Bom, as "constant functions" entram no sentido de facilitar a inclusão
> de novos módulos à medida da necessidade, constantemente entram novas fontes
> onde preciso buscar dados e para cada fonte crio um módulo.
>     As "constant functions" tem o mesmo nome em todos estes módulos, porém,
> apontam para ações de webservice diferentes, eu crio o módulo e somente
> altero estas ações e em muito pouco tempo tenho uma nova fonte operando.
>     Minha pergunta é, como referenciar de forma dinâmica estas constantes no
> módulo principal, segue uma forma muito simplificada do funcionamento :
>
> MODULO A
>
> sub SELFCODE {13};
> sub SELFNAME {'SUPPLIERA'};
> sub GET_PRODUCT_INFORMATION {'getStaticData_Product'};
> sub GET_DESTINATION_INFORMATION {'getStaticData_Destination'};
>
> MODULO B
>
> sub SELFCODE {61};
> sub SELFNAME {'SUPPLIERB'};
> sub GET_PRODUCT_INFORMATION {'productsData'};
> sub GET_DESTINATION_INFORMATION {'destinations'};
>
> MODULO PRINCIPAL
>
> my $supplier=$xml->{supplier}; # Supplier = A ou B
> my $pkg='Supplier::'.$supplier; # Supplier::A ou Supplier::B
> my $obj=$pkg->new();
> if ($xml->{type} eq 'product'){
>     $obj->{type}=$pkg::GET_PRODUCT_INFORMATION;
> }
> elsif ($xml->{type} eq 'destination'){
>     $obj->{type}=$pkg::GET_DESTINATION_INFORMATION;
> }
> $obj->processdata();
>
>     Meu problema é bastante simples, mas eu não estou conseguindo achar a
> solução.
>
> $pkg::GET_DESTINATION_INFORMATION
>
>     Dá este erro :
>
> Use of uninitialized value in print at /home/inquiry/s2Dev/Inquiry.pm line
> 440

Invoca a subrotina assim:

$pkg->GET_DESTINATION_INFORMATION

-- 
edenc.vox.com


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