[Rio-pm] use 5.016 ou use strict/warnings

Leo Balter leonardo.balter em gmail.com
Domingo Março 3 18:41:29 PST 2013


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 <ole.ufg em gmail.com> escreveu:

> o 'nosso' breno servindo o gabarito....
>
> garu++!
>
> 0le
>
> Send via Android
> On Mar 3, 2013 2:16 AM, "breno" <breno em rio.pm.org> 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
>> Rio-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm
>>
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20130303/f2f02f19/attachment.html>


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