[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