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

Ole Peter Smith ole.ufg em gmail.com
Domingo Março 3 02:53:12 PST 2013


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
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20130303/105b56cb/attachment-0001.html>


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