Mas ok, não é uma boa prática...
2014-04-29 19:15 GMT-03:00 Blabos de Blebe <bla...@gmail.com>: > > café deve ser 'duro' > > TimToady!!! > > > 2014-04-29 19:12 GMT-03:00 Renato Santos <renato.c...@gmail.com>: > > Cara, café não se pode ferver! seu café deve ser 'duro' >> >> >> 2014-04-29 19:01 GMT-03:00 Blabos de Blebe <bla...@gmail.com>: >> >> Enquanto meu café ferve, aqui vale uma reflexão: >>> >>> "Boas práticas" é um conceito flutuante. >>> >>> Perl é uma linguagem extremamente rica e se desenvolvimento bastante >>> dinâmico. O que era boa prática quando eu aprendi, já não é boa prática >>> hoje. As coisas mudam. >>> >>> http://perldoc.perl.org/perlhist.html >>> >>> Embora muita gente fale que Perl é pré-histórico, a versão mais atual >>> foi lançada em janeiro. Se você bobear, você que fica pré-histórico. >>> >>> []'s >>> >>> >>> >>> >>> 2014-04-29 18:52 GMT-03:00 Blabos de Blebe <bla...@gmail.com>: >>> >>> Pacman, copião :) >>>> >>>> >>>> 2014-04-29 18:50 GMT-03:00 Blabos de Blebe <bla...@gmail.com>: >>>> >>>> > que Modulo::funcao dispensa declarar o construtor. >>>>> >>>>> Não dispensa. Não tem nada a ver. Não misture as coisas. >>>>> >>>>> Construtor é um conceito associado a um método especial utilizado para >>>>> inicializar objetos, ou seja, quando você está utilizando uma interface >>>>> orientada a objetos. >>>>> >>>>> Em C++, o Construtor tem que ser um método cujo nome é o nome da >>>>> classe. >>>>> >>>>> Em Python é outro padrão. >>>>> >>>>> Em Perl isso é livre, um construtor, ou seja um inicializador de >>>>> objetos pode ser qualquer método que eventualmente invoque a sub bless(). >>>>> >>>>> http://perldoc.perl.org/functions/bless.html >>>>> >>>>> Em Perl convencionamos, pra ninguém ficar louco, que o construtor >>>>> chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso. >>>>> >>>>> Modulo::funcao() é uma chamada 'procedural' aplicando o namespace >>>>> completo FQN. Não tem nada a ver com objetos, ou construtores. >>>>> >>>>> *** >>>>> >>>>> No seu caso, como bem observado pelo Junior, o que você quer é não ter >>>>> que passar o namespace completo, por isso o uso do Exporter, que nada mais >>>>> faz do que tornar a sua função conhecida no namespace atual. >>>>> >>>>> Exporter também não tem nada a ver com objetos. >>>>> >>>>> A boa prática é usar @EXPORT_OK pra não exportar todos os símbolos por >>>>> default. Nesse caso, ao usar o seu módulo você precisa fazer: >>>>> >>>>> use Modulo qw{ funcao }; >>>>> >>>>> Aqui, "boa prática" significa basicamente, "vou tormar o cuidado de >>>>> exportar apenas o necessário pra não correr risco de dar conflito com >>>>> outra >>>>> função de mesmo nome de outro módulo". >>>>> >>>>> Mas é só uma politica de boa vizinhança, não quer dizer, >>>>> necessariamente, errado. Depende do seu contexto. >>>>> >>>>> *** >>>>> >>>>> Como em Perl as coisas são mais livres, você vai ver casos de um >>>>> package que tem construtor, métodos *E* funções comuns, ou seja, tanto uma >>>>> interface OO quanto procedural. Exemplo: >>>>> https://metacpan.org/pod/String::Trigram >>>>> >>>>> Antigamente, quando OO era 'novidade', o pessoal costumava publicar >>>>> uma interface OO *E* uma interface procedural, pra ficar ao gosto do >>>>> cliente escolher. Outro exemplo: https://metacpan.org/pod/CGI >>>>> >>>>> Por essas e outras, *EU*, acho meio confuso ter Perl como primeira >>>>> linguagem, pois ela te dar liberdades que em não tendo todos os conceitos >>>>> bem sedimentados, *pode* confundir. >>>>> >>>>> O importante é, em estar estudando, não parar no estágio "ah consegui >>>>> fazer" mas sim prosseguir pelo menos até o "ah, entendi como funciona". >>>>> >>>>> []'s >>>>> >>>>> >>>>> >>>>> >>>>> 2014-04-29 18:32 GMT-03:00 Aureliano Guedes <guedes_1...@hotmail.com>: >>>>> >>>>> Funcionou da forma que o Junior passou. >>>>>> >>>>>> Obrigado. >>>>>> >>>>>> Experimentei fazer o dumper como o Bablos falou. Realmente são formas >>>>>> diferentes, sendo que Modulo::funcao dispensa declarar o construtor. >>>>>> >>>>>> ------------------------------ >>>>>> From: juniiior...@gmail.com >>>>>> Date: Tue, 29 Apr 2014 18:15:00 -0300 >>>>>> >>>>>> To: rio-pm@pm.org >>>>>> Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor >>>>>> >>>>>> Hi. >>>>>> >>>>>> Em 29 de abril de 2014 18:07, Blabos de Blebe <bla...@gmail.com>escreveu: >>>>>> >>>>>> Só mais uma coisa, >>>>>> >>>>>> Isso não tem nada a ver com Exporter. >>>>>> >>>>>> []'s >>>>>> >>>>>> >>>>>> Eu acho que ele tá perguntando mesmo como exportar uma sub e torná-la >>>>>> possível ser chamada à partir de outro script bastando dar um use no >>>>>> módulo, e não como invocar um método estaticamente como eu pensei. >>>>>> >>>>>> Creio que o jeito mais roots seria: >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> *package Modulo::Modulo;use vars qw(@ISA @EXPORT);@ISA = >>>>>> (qw(Exporter));@EXPORT = qw(acp); sub acp {* >>>>>> >>>>>> *...* >>>>>> *}* >>>>>> 1; >>>>>> >>>>>> Deste modo, Aureliano, bastará dar um *use* em Modulo::Modulo e a >>>>>> função acp() estará acessível, assim como no Math::Prime::Util. >>>>>> >>>>>> []'s >>>>>> >>>>>> _______________________________________________ >>>>>> >>>>>> Rio-pm mailing list >>>>>> Rio-pm@pm.org >>>>>> http://mail.pm.org/mailman/listinfo/rio-pm >>>>>> >>>>>> >>>>>> >>>>>> _______________________________________________ Rio-pm mailing list >>>>>> Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm >>>>>> >>>>>> _______________________________________________ >>>>>> Rio-pm mailing list >>>>>> Rio-pm@pm.org >>>>>> http://mail.pm.org/mailman/listinfo/rio-pm >>>>>> >>>>> >>>>> >>>> >>> >>> _______________________________________________ >>> Rio-pm mailing list >>> Rio-pm@pm.org >>> http://mail.pm.org/mailman/listinfo/rio-pm >>> >> >> >> >> -- >> Saravá, >> Renato CRON >> http://www.renatocron.com/blog/ >> @renato_cron <http://twitter.com/#!/renato_cron> >> >> _______________________________________________ >> Rio-pm mailing list >> Rio-pm@pm.org >> http://mail.pm.org/mailman/listinfo/rio-pm >> > >
_______________________________________________ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm