Ao contrário do Stan, eu não recomendo o Dist::Zilla. Ou pelo menos não pra vc que está começando. Pode ser uma ótima ferramenta para alguns autores, mas se vc não entende a "mágica" que acontece por trás, pode se confundir e te deixar mais tempo configurando/depurando as ferramentas em vez de trabalhando no(s) seu(s) próprio(s) módulo(s).
Respondendo a sua pergunta, os arquivos Makefile.PL existem para a criação de "distribuições", que podem conter um ou mais módulos (além de scripts e outros arquivos). Quando vc faz uma distribuição, não tem problema se os módulos dentro dela dependerem de outro, contanto que esse outro também esteja dentro da distribuição (mas tenha cuidado com dependências circulares!). Há 3 construtores populares: * ExtUtils::MakeMaker, a.k.a. EUMM (que vc já citou) * Module::Build, a.k.a MB * Module::Install, a.k.a. MI Embora o EUMM esteja no core, o M:I tem uma DSL bem fácil de usar e é utilizado em projetos de grande porte como Catalyst. Digamos que vc tenha a seguinte estrutura de módulos: lib/ lib/MeuModulo.pm lib/MeuModulo lib/MeuModulo/Modulo1.pm lib/MeuModulo/Modulo2.pm e queira criar uma distribuição chamada "Minha-Dist" contendo isso tudo. A sintaxe do seu Makefile.PL é muito simples: ---------------8<--------------- use inc::Module::Install; name 'Minha-Dist'; all_from 'lib/MeuModulo.pm'; WriteAll; --------------->8--------------- Pronto. Fácil, não? Ao rodar "perl Makefile.PL" ele vai gerar alguns arquivos pra vc. Depois digite "make manifest" e "make dist" e vc terá um Minha-Dist-0.01.tar.gz te esperando, pronto pra ser instalado =) Algumas observações sobre o Makefile.PL acima: * "name" indica o nome da distribuição. A convenção é que vc use o mesmo nome do seu módulo base, o principal da sua distribuição (e que provavelmente a maioria das pessoas vai usar primeiro). No seu caso, suponho que o melhor "name" para a sua distribuição seria "MeuModulo". * "all_from" indica de onde o Makefile.PL deve extrair informações como versão, licença, autor, resumo, etc. Ele extrai essa informação de variáveis especiais de módulos (como "our $VERSION") e da documentação - então não esqueça de incluir os campos pertinentes na documentação (sempre uma boa prática!) ou terá que inclui-los explicitamente no Makefile.PL. Digamos que os módulos da sua distribuição dependam dos seguintes módulos EXTERNOS: File::Spec e Carp. Digamos ainda que, embora não seja uma dependência direta, se o usuário tiver instalado o módulo Data::Printer o seu programa consegue fazer alguma outra coisa bacana, então embora não seja obrigatório vc gostaria de recomendar o Data::Printer. Adicionar essas dependências no Makefile.PL é simples, ele fica assim: ---------------8<--------------- use inc::Module::Install; name 'Minha-Dist'; all_from 'lib/MeuModulo.pm'; requires 'File::Spec' => 0; requires 'Carp' => 0; recommends 'Data::Printer' => 0.3; WriteAll; --------------->8--------------- O número depois da "=>" indica a versão mínima do módulo, usamos zero (0) para indicar que qualquer versão serve. Com isso acho que vc já tem o suficiente. Não esqueça de criar um diretório "t" na raiz da sua distribuição para colocar os testes de seus módulos!! Mais sobre o M:I vc encontra na documentação (https://metacpan.org/module/Module::Install) Obs: quando criamos um novo módulo, há alguns "boilerplates" que criam as estruturas e documentações básicas para vc. Eu particularmente gosto do Module::Starter, com o plugin Module::Starter::PBP (mas eu modifico os templates em ~/.module-starter/PBP para conter o esqueleto que uso). Assim, basta escrever na linha de comando: $ module-starter --module="Meu::Novo::Modulo" e ele cria tudo para mim. Quando vc estiver acostumado a criar suas distribuições e entender o processo, vai começar a ficar preguiçoso. Aí sim, dê uma olhada no Dist::Zilla e veja se ele é para vc =) []s -b 2012/6/2 Stanislaw Pusep <[email protected]>: > A resposta é: Dist::Zilla. > Pode parecer chatinho de aprender, mas, uma vez sabendo o básico, criar > módulo com Makefile.PL completo e suíte de testes é dois palitos! > Recomendo: > > http://sao-paulo.pm.org/artigo/2011/OhnoItsDistZilla > http://sao-paulo.pm.org/equinocio/2011/set/2 > > ABS() > > > > 2012/6/2 Aureliano Guedes <[email protected]> >> >> Ola, >> Monges. >> >> Eu estou tentando gerar um MakeFile.PL mas estou com um problema. >> Eu andei lendo, inclusive alguns materiais do Hernan Lopes mas ficou uma >> pergunta. >> >> Quando eu tenho varios modulos que na verdade sao dependencia de outro >> modulo. >> exemplo: >> MeuModulo.pm, >> MeuModulo/Modulo1.pm, >> MeuModulo/Modulo2.pm. >> >> Como faco? >> >> Nao achei nenhuma opcao no ExtUtils::MakeMaker. >> >> Desde ja, obrigado. >> Att, >> >> Aureliano Guedes >> >> PS: Desculpem a falta de acentos, o teclado esta desconfigurado. >> >> _______________________________________________ >> Rio-pm mailing list >> [email protected] >> http://mail.pm.org/mailman/listinfo/rio-pm > > > > _______________________________________________ > Rio-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/rio-pm _______________________________________________ Rio-pm mailing list [email protected] http://mail.pm.org/mailman/listinfo/rio-pm
