Se extrairem as mega respostas do Garu na lista da pra escrever um livro e ganhar uma graninha.
Em 3 de março de 2013 07:53, Ole Peter Smith <[email protected]> escreveu: > 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 >
_______________________________________________ Rio-pm mailing list [email protected] http://mail.pm.org/mailman/listinfo/rio-pm
