[Cascavel-pm] namespaces

Luis Motta Campos luismottacampos em yahoo.co.uk
Sexta Agosto 24 01:40:22 PDT 2007


On Fri, 24 Aug 2007, Flavio S. Glock wrote:
> Em 23/08/07, Karen Taga<karentaga em gmail.com> escreveu:
>> Existem pacotes em vários diretórios internos.. posso definir o namespace
>> Projeto::pacote em todos os pacotes,
>
> sim, pode
>
>> ou o namespace deve ter o nome do
>> diretorio em que se encontram os pacotes??
>
> é melhor, porque fica mais fácil de entender a estrutura de módulos

   Opa!!! Calma aqui!

   Vamos presumir que voce tenha uma estrutura de diretorios como

   mkdir -p ~/lib/perl/{A/B,C/D,E/F}/

   E, nela, modulos:

   touch ~/lib/perl/{A/{P,B/}M,C/D/N,E/F/O}.pm

   Assim:

  -- perl
     |-- A
     |   |-- B
     |   |   `-- M.pm
     |   `-- PM.pm
     |-- C
     |   `-- D
     |       `-- N.pm
     `-- E
         `-- F
             `-- O.pm

   Voce pode chamar o modulo dentro do arquivo M.pm do que quiser. Mas,=20
para usar o modulo, vai ter de dizer

        use A::B::M;

   Se isso nao for o nome do seu pacote, voce pode ficar confusa, e=20
confundir outros programadores.

   Se, por exemplo, no arquivo perl/A/B/M.pm voce tiver uma declaracao

        package C::D::N.pm

   O cara vai terminar dizendo (depois de ler a documentacao)

        use C::D::N;

   O que vai carregar o modulo que estiver declarado em perl/C/D/N.pm, nao 
o modulo que voce declarou (com o nome de C::D::N) em perl/A/B/M.pm.

   Sendo assim, a recomendacao eh que voce nomeie os seus modulos e
posicione os arquivos em lugares onde fique facil deduzir que pacotes eles 
tem dentro deles.

   Assim, quando voce precisar re-usar codigo, ele vai fazer sentido..

   Eu espero que isso explique melhor. O "mestre" parece nao estar muito
bem para explicacoes. Deve ser o excesso de azeite na comida... ;-)

   Putamplexos!
--
Luis Motta Campos
Perl Programmer, Hobbyist Cook and Photographer


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