o 'nosso' breno servindo o gabarito.... garu++!
0le Send via Android On Mar 3, 2013 2:16 AM, "breno" <[email protected]> wrote: > > Mete um common::sense na bagaça toda e seja feliz! > >> use perl5i; > >>> strict/warnings mas pela simples força do hábito. > > perl5i, common::sense, Toolkit, strictures, Real::Handy, > Modern::Perl... todo mundo cedo ou tarde percebe um padrão no seu > código Perl, um conjunto de módulos e pragmata que sempre gosta de > usar em seus projetos. Perl é uma linguagem moldada no formato > TIMTOWTDI, então parece injusto com os desenvolvedores que um ou outro > conjunto de módulos seja ativado por padrão em qualquer código Perl. > Agora, uma vez que você encontrou o *seu* estilo, imagine ter que > escrever isso tudo no cabeçalho de cada novo arquivo: > > -----------8<----------- > use 5.16.0; > use warnings; > no indirect; > no autovivification; > use true; > use autodie qw(:all); > use autobox; > use utf8; > use File::stat; > use Time::Piece; > use Try::Tiny; > use Carp qw(croak); > ... > ----------->8----------- > > Complicado, né? Por isso muitos autores acabam criando suas coletâneas > e distribuindo no CPAN, como as citadas lá no começo. No entanto, isso > também não é de graça: usuários do seu módulo agora tem que baixar uma > nova dependência apenas porque você teve preguiça de escrever "use > $modulo"; e você AINDA tem que escrever "use COLETANEA" no inicio de > cada novo arquivo que criar. > > Independente da coletânea utilizada, o problema não foi resolvido, > apenas contornado. Mas nada temam, há uma alternativa: > > App::MyPerl > ========== > > Ao instalar o App::MyPerl, você ganha dois programas na linha de > comando: "myperl" e "myprove". A partir daí, basta editar o arquivo > .myperl/modules dentro da raiz do seu projeto e adicionar a lista de > módulos e pragmata que você quer. Por exemplo: > > -----------8<----------- > v5.16 > warnings > autodie=:all > ----------->8----------- > > Ao rodar seu programa com "myperl", todos os módulos desse arquivo já > estarão carregados! O mesmo acontece para qualquer biblioteca dentro > de "lib" e "t/lib", o que torna tudo muito mais fácil para o seu > desenvolvimento dentro de diretórios de projetos (como os criados pelo > Module::Starter, shipit ou Dist::Zilla). Tudo isso sem source filters > e sem que os erros e avisos sejam colocados em linhas diferentes (como > o que acontece quando linhas são adicionadas sem modificar o arquivo > original). Para rodar seus testes, é só usar o "myprove" em vez do > "prove". > > Os mais safos podem estar pensando: "ok, mas qual a vantagem disso em > relação a simplesmente fazer alias myperl='perl -Mv5.16 -M...'? Não é > tão difícil assim." Tem razão, não é. Mas o "myperl" tem duas grandes > vantagens. > > A primeira é que o diretório ".myperl" é criado por projeto. Assim > você pode definir diferentes conjuntos de pragmata dependendo do tipo > de projeto que está criando, por exemplo se é um projeto pessoal > pequeno, um trabalho profissional ou um com determinadas restrições de > ambiente. > > A segunda vantagem do "myperl" é que, com ele, você não só tem o perl > com as configurações padrão que bem entender, mas garante que essas > mesmas configurações serão passadas para todos os usuários do seu > módulo automaticamente, sem a inclusão de novas dependências! Como? É > só adicionar a seguinte função ao seu Makefile.PL: > > sub MY::postamble { > qq{distdir: myperl_rewrite\nmyperl_rewrite: > create_distdir\n\tmyperl-rewrite \$(DISTVNAME)} > } > > Pronto. Agora, quando for fazer o build para o CPAN, o myperl vai > adicionar as linhas pertinentes no código dentro da sua distribuição > durante o 'make dist' \o/ > > Enfim, o App::MyPerl é mais uma solução para facilitar a vida de quem > quer módulos e pragmas específicos para seus projetos, só que sem ter > que carregar mais uma dependência ou adicionar uma linha de código > sequer durante o desenvolvimento do seu programa. Adicione alguns > atalhos ao seu gerador de módulos favorito (module-starter, dzil, > shipit, entre outros) e você terá algo bem bacana na sua caixa de > ferramentas! > > Disclaimer: ainda há algumas pontas soltas, o projeto acabou de nascer > e não está particularmente maduro - eu mesmo já mandei alguns pull > requests pro Matt - mas vale a pena ficar de olho! > > > []s > > -b > _______________________________________________ > 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
