<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<div class="PlainText">Ainda sim mataria o dragão com perl.<br>
<a href="http://www.programacaoprogressiva.net/2012/12/Como-programadores-matariam-um-dragao-e-salvariam-a-princesa.html?m=1">http://www.programacaoprogressiva.net/2012/12/Como-programadores-matariam-um-dragao-e-salvariam-a-princesa.html?m=1</a><br>
<br>
Renato Santos <renato.cron@gmail.com> escreveu:<br>
<br>
</div>
<div>
<div dir="ltr"><a href="http://i.imgur.com/8iUZEZt.png">http://i.imgur.com/8iUZEZt.png</a><br>
<div>só pela zuera!</div>
</div>
<div class="x_gmail_extra"><br>
<br>
<div class="x_gmail_quote">2014-04-29 20:25 GMT-03:00 Daniel Vinciguerra <span dir="ltr">
<<a href="mailto:dan.vinciguerra@gmail.com" target="_blank">dan.vinciguerra@gmail.com</a>></span>:<br>
<blockquote class="x_gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div dir="ltr">Boas praticas com Delphi é ruim heim hahaha<br>
</div>
<div class="x_gmail_extra"><br clear="all">
<div>
<div dir="ltr"><b><br>
Daniel Vinciguerra (@dvinciguerra)</b><br>
Web solution architect, perl dev, vegetarian, geek and founder at <b><span style="color:rgb(204,0,0)">Bivee</span></b><br>
<span style="font-family:arial,sans-serif; font-size:13px; border-collapse:collapse"><a href="http://bivee.com.br" target="_blank" style="color:rgb(28,81,168)">bivee.com.br</a>  - 
<a href="https://github.com/Bivee" target="_blank">github.com/Bivee</a><br>
</span><span style="font-family:arial,sans-serif; font-size:13px; border-collapse:collapse"></span></div>
</div>
<br>
<br>
<div class="x_gmail_quote">2014-04-29 20:11 GMT-03:00 Renato Santos <span dir="ltr">
<<a href="mailto:renato.cron@gmail.com" target="_blank">renato.cron@gmail.com</a>></span>:
<div>
<div class="x_h5"><br>
<blockquote class="x_gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div dir="ltr">** FLAME WARRRRRR***
<div>C++ e Delphi ?<br>
</div>
<div><br>
</div>
<div>linus torvalds discorda disso!<br>
</div>
<div><br>
</div>
<div><a href="http://article.gmane.org/gmane.comp.version-control.git/57918" target="_blank">http://article.gmane.org/gmane.comp.version-control.git/57918</a><br>
</div>
<div><br>
</div>
<div><br>
</div>
</div>
<div class="x_gmail_extra"><br>
<br>
<div class="x_gmail_quote">2014-04-29 20:02 GMT-03:00 Aureliano Guedes <span dir="ltr">
<<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>></span>:
<div>
<div><br>
<blockquote class="x_gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div>
<div>>ter Perl como primeira linguagem<br>
Esse foi meu feliz erro.<br>
Sofro com alguns problemas de boas praticas mas em questão de logica pura eu m dou bem.<br>
Eu diria que quem quer aprender logica deveria aprender Perl.<br>
Agora aprendi C VB.net e mais recentemente C++ e Delphi pra tentar aprender boas praticas.
<div>
<div><br>
<br>
<br>
Blabos de Blebe <<a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a>> escreveu:<br>
<br>
</div>
</div>
</div>
<div>
<div>
<div>
<div dir="ltr">Mas ok, não é uma boa prática...</div>
<div><br>
<br>
<div>2014-04-29 19:15 GMT-03:00 Blabos de Blebe <span dir="ltr"><<a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a>></span>:<br>
<blockquote style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div dir="ltr">> <span style="font-family:arial,sans-serif; font-size:13px">café deve ser 'duro'</span>
<div><br>
</div>
<div>TimToady!!!
<div><br>
<br>
<div>2014-04-29 19:12 GMT-03:00 Renato Santos <span dir="ltr"><<a href="mailto:renato.cron@gmail.com" target="_blank">renato.cron@gmail.com</a>></span>:
<div>
<div><br>
<blockquote style="margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-color:rgb(204,204,204); border-left-style:solid; padding-left:1ex">
<div dir="ltr">Cara, café não se pode ferver! seu café deve ser 'duro'</div>
<div><br>
<br>
<div>2014-04-29 19:01 GMT-03:00 Blabos de Blebe <span dir="ltr"><<a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a>></span>:
<div>
<div><br>
<blockquote style="margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-color:rgb(204,204,204); border-left-style:solid; padding-left:1ex">
<div dir="ltr">Enquanto meu café ferve, aqui vale uma reflexão:
<div><br>
</div>
<div>"Boas práticas" é um conceito flutuante.</div>
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div><a href="http://perldoc.perl.org/perlhist.html" target="_blank">http://perldoc.perl.org/perlhist.html</a><br>
</div>
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div>[]'s</div>
<div><br>
</div>
<div><br>
</div>
</div>
<div><br>
<br>
<div>2014-04-29 18:52 GMT-03:00 Blabos de Blebe <span dir="ltr"><<a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a>></span>:
<div>
<div><br>
<blockquote style="margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-color:rgb(204,204,204); border-left-style:solid; padding-left:1ex">
<div dir="ltr">Pacman, copião :)</div>
<div><br>
<br>
<div>2014-04-29 18:50 GMT-03:00 Blabos de Blebe <span dir="ltr"><<a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a>></span>:
<div>
<div><br>
<blockquote style="margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-color:rgb(204,204,204); border-left-style:solid; padding-left:1ex">
<div dir="ltr">
<div>> <span style="font-family:arial,sans-serif; font-size:13px">que Modulo::funcao dispensa declarar o construtor.</span>
<div><span style="font-family:arial,sans-serif; font-size:13px"><br>
</span></div>
</div>
<div><font face="arial, sans-serif">Não dispensa. Não tem nada a ver. Não misture as coisas.</font></div>
<div><font face="arial, sans-serif"><br>
</font></div>
<div><font face="arial, sans-serif">Construtor é um conceito associado a um método especial utilizado para inicializar objetos, ou seja, quando você está utilizando uma interface orientada a objetos.</font></div>
<div><font face="arial, sans-serif"><br>
</font></div>
<div><font face="arial, sans-serif">Em C++, o Construtor tem que ser um método cujo nome é o nome da classe.</font></div>
<div><font face="arial, sans-serif"><br>
</font></div>
<div><font face="arial, sans-serif">Em Python é outro padrão.</font></div>
<div><font face="arial, sans-serif"><br>
</font></div>
<div><font face="arial, sans-serif">Em Perl isso é livre, um construtor, ou seja um inicializador de objetos pode ser qualquer método que eventualmente invoque a sub bless().</font></div>
<div><br>
</div>
<div><a href="http://perldoc.perl.org/functions/bless.html" target="_blank">http://perldoc.perl.org/functions/bless.html</a></div>
<div><br>
</div>
<div>Em Perl convencionamos, pra ninguém ficar louco, que o construtor chama-se new. Mas não existe palavra reservada ou obrigatoriedade nisso.</div>
<div><br>
</div>
<div><span style="font-family:arial,sans-serif; font-size:13px">Modulo::funcao() é uma chamada 'procedural' aplicando o namespace completo FQN.</span> Não tem nada a ver com objetos, ou construtores.</div>
<div><br>
</div>
<div>***</div>
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div>Exporter também não tem nada a ver com objetos.</div>
<div><br>
</div>
<div>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:</div>
<div><br>
</div>
<div>use Modulo qw{ funcao };</div>
<div><br>
</div>
<div>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".</div>
<div><br>
</div>
<div>Mas é só uma politica de boa vizinhança, não quer dizer, necessariamente, errado. Depende do seu contexto.</div>
<div><br>
</div>
<div>***</div>
<div><br>
</div>
<div>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: <a href="https://metacpan.org/pod/String::Trigram" target="_blank">https://metacpan.org/pod/String::Trigram</a></div>
<div><br>
</div>
<div>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: <a href="https://metacpan.org/pod/CGI" target="_blank">https://metacpan.org/pod/CGI</a></div>
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div>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".</div>
<div><br>
</div>
<div>[]'s </div>
<div><br>
</div>
<div><br>
</div>
</div>
<div><br>
<br>
<div>2014-04-29 18:32 GMT-03:00 Aureliano Guedes <span dir="ltr"><<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>></span>:
<div>
<div><br>
<blockquote style="margin:0px 0px 0px 0.8ex; border-left-width:1px; border-left-color:rgb(204,204,204); border-left-style:solid; padding-left:1ex">
<div>
<div dir="ltr">Funcionou da forma que o Junior passou.
<div><br>
</div>
<div>Obrigado.</div>
<div><br>
</div>
<div>Experimentei fazer o dumper como o Bablos falou. Realmente são formas diferentes, sendo que Modulo::funcao dispensa declarar o construtor.<br>
<br>
<div>
<hr>
From: <a href="mailto:juniiior182@gmail.com" target="_blank">juniiior182@gmail.com</a><br>
Date: Tue, 29 Apr 2014 18:15:00 -0300
<div><br>
To: <a href="mailto:rio-pm@pm.org" target="_blank">rio-pm@pm.org</a><br>
Subject: Re: [Rio-pm] [DUVIDA] Chamar função sem declarar construtor<br>
<br>
</div>
<div>
<div>
<div dir="ltr">
<div>
<div>Hi.<br>
<br>
<div>Em 29 de abril de 2014 18:07, Blabos de Blebe <span dir="ltr"><<a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a>></span> escreveu:<br>
<blockquote style="border-left-width:1px; border-left-style:solid; border-left-color:rgb(204,204,204); padding-left:1ex">
<div dir="ltr">Só mais uma coisa,
<div><br>
</div>
<div>Isso não tem nada a ver com Exporter.</div>
<div><br>
</div>
<div>[]'s</div>
</div>
</blockquote>
<div><br>
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.<br>
<br>
Creio que o jeito mais roots seria:<br>
<br>
<i>package Modulo::Modulo;<br>
<br>
use vars qw(@ISA @EXPORT);<br>
<br>
@ISA    = (qw(Exporter));<br>
@EXPORT = qw(acp);<br>
<br>
sub acp {</i><br>
<i>...<br>
</i>
<div><i>}</i><br>
1;<br>
<br>
</div>
<div>Deste modo, Aureliano, bastará dar um <b>use</b> em Modulo::Modulo e a função acp() estará acessível, assim como no Math::Prime::Util.<br>
<br>
</div>
[]'s<br>
<br>
</div>
<div> _______________________________________________<br>
</div>
<blockquote style="border-left-width:1px; border-left-style:solid; border-left-color:rgb(204,204,204); padding-left:1ex">
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
</blockquote>
</div>
<br>
</div>
</div>
</div>
<br>
_______________________________________________ Rio-pm mailing list <a href="mailto:Rio-pm@pm.org" target="_blank">
Rio-pm@pm.org</a> <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">
http://mail.pm.org/mailman/listinfo/rio-pm</a></div>
</div>
</div>
</div>
</div>
</div>
<br>
_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
</blockquote>
</div>
</div>
</div>
<br>
</div>
</blockquote>
</div>
</div>
</div>
<br>
</div>
</blockquote>
</div>
</div>
</div>
<br>
</div>
<br>
_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
</blockquote>
</div>
</div>
</div>
<span><font color="#888888"><br>
<br clear="all">
<div><br>
</div>
-- <br>
<div><span style="color:rgb(51,51,51); font-size:x-small">Saravá,</span></div>
<div><span style="color:rgb(51,51,51); font-size:x-small">Renato CRON</span></div>
<div>
<div style="text-align:right"><font color="#333333" size="1"><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a></font></div>
</div>
<div style="text-align:right"><font color="#333333" size="1"><a href="http://twitter.com/#!/renato_cron" target="_blank">@renato_cron</a></font></div>
</font></span></div>
<br>
_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
</blockquote>
</div>
</div>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</div>
<br>
_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
</blockquote>
</div>
</div>
</div>
<div>
<div><br>
<br clear="all">
<div><br>
</div>
-- <br>
<div><span style="color:rgb(51,51,51); font-size:x-small">Saravá,</span></div>
<div><span style="color:rgb(51,51,51); font-size:x-small">Renato CRON</span></div>
<div>
<div style="text-align:right"><font color="#333333" size="1"><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a></font></div>
</div>
<div style="text-align:right"><font color="#333333" size="1"><a href="http://twitter.com/#!/renato_cron" target="_blank">@renato_cron</a></font></div>
</div>
</div>
</div>
<br>
_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
</blockquote>
</div>
</div>
</div>
<br>
</div>
<br>
_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div><span style="color:rgb(51,51,51); font-size:x-small">Saravá,</span></div>
<div><span style="color:rgb(51,51,51); font-size:x-small">Renato CRON</span></div>
<div>
<div style="text-align:right"><font size="1" color="#333333"><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a></font></div>
</div>
<div style="text-align:right"><font size="1" color="#333333"><a href="http://twitter.com/#!/renato_cron" target="_blank">@renato_cron</a></font></div>
</div>
</div>
</body>
</html>