<br><br><div class="gmail_quote">2009/8/26 Adimir <span dir="ltr">&lt;<a href="mailto:adimircolen@gmail.com">adimircolen@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Ola lista, seguinte não é problema exclusivamente, gostaria de opiniões
sobre usar &quot;use Template&quot; em um sistema que já tem como base o uso de
CGI básico, emitindo htmls no meio do código, a ideia base e principal
seria a de separar os htmls totalmente dos codigos perl, e quanto a
componentização de templates ? </blockquote><div><br>A sua colocação está um pouco estranha. CGI é uma coisa, template é outra, mas podem(e devem) trabalhar juntos. Mas estou supondo que você quer dizer que o teu código CGI está gerando HTML sem o uso de templates(espero estar enganado ;)).<br>
<br>A idéia básica é separar o código do HTML mesmo. Templates é uma das ferramentas que você deve usar para implementar esse tipo de arquitetura. Outra ferramenta que você deve dar uma olhada é uma metodologias muito utilizada hoje:  MVC(Model View Controler - http://<font><a href="http://www.google.com.br/url?&amp;ei=8imVSvWLMuCFmQepheytDA&amp;sig2=-Nsh8TJkfsQ6AjJplw4MrA&amp;q=http://pt.wikipedia.org/wiki/MVC&amp;ei=8imVSvWLMuCFmQepheytDA&amp;sa=X&amp;oi=define&amp;ct=&amp;cd=1&amp;usg=AFQjCNGv4UXfV_-9HOJxBGeCnQO0weuhzw"><font color="#008000">pt.wikipedia.org/wiki/MVC</font></a> ). </font> <br>
<br>Existem frameworks baseados em MVC que você pode utilizar, e estão disponíveis na maioria das linguagens modernas. Em Perl o mais utilizado e famoso é o Catalyst ( <a href="http://www.catalystframework.org">http://www.catalystframework.org</a> ).<br>
 <br>Outra coisa que você deve olhar é o suporte básico a orientação a objetos(perldoc perlobj - e os módulos  Class, Class::MOB etc.). Depois seria módulo de extensão ao suporte de orientação a objetos, o módulo Moose( <a href="http://www.iinteractive.com/moose/">http://www.iinteractive.com/moose/</a> ). <br>
<br>Aproveitando, existem canais muito legais que podem ajudar você a esclarecer suas dúvidas de maneira mais rápida, e também ajuda você a se integrar melhor na comunidade. Para isso utilizamos o canal IRC - <a href="http://p">http://p</a><br>
<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br><br>Ex: templates de listagem
(tabelas) que teriam alguma logica embarcada para poder ser reutilizada
em diferentes tipos de tabelas.<br>Essa conponentização não acarreta em problemas ? complicações futuras e limitações ?<br><br></blockquote><div><br>O que você quis dizer com &#39;lógica embarcada&#39; ??? Desculpe a ignorância...<br>
<br>Não entendi exatamente o seu problema. Gostaria que explicasse melhor exatamente o que você precisa fazer(se puder).<br><br></div><div><br>Exemplo simples abaixo:<br><br>&lt;code&gt;<br>#! /usr/bin/perl<br><br>use strict;<br>
use Template;<br>use CGI;<br><br><br>my $cgi = CGI-&gt;new();<br>print $cgi-&gt;header;<br><br>my $template_config = { INTERPOLATE =&gt; 0}; #RTFM em Template para mais detalhes.<br>my $template = Template-&gt;new($template_config);<br>
my $template_file = &#39;/path/to/template/file.tmpl&#39;; #tmpl é uma espécie de &#39;padrão clássico&#39;(opcional).<br>my $dados = algum_metodo_recuperador_de_dados();<br><br>$template-&gt;process($template_file,{texto_h1 =&gt; &#39;TESTE&#39;,dados =&gt; $dados}); #aqui você pode passar qualquer coisa para o template. Ele suporta as estruturas de dados existentes em perl, portanto você pode iterá-las caso necessário dentro do próprio template, através de uma meta-linguagem própria. Mais detalhes e exemplos em - <a href="http://template-toolkit.org/docs/manual/VMethods.html">http://template-toolkit.org/docs/manual/VMethods.html</a><br>
<br>sub algum_metodo_recuperador_de_dados {<br>#extrema preguiça de escrever isso!<br>}<br><br><br>&lt;/code&gt;<br><br><br>#Enquanto isso lá no template...<br><br><br>&lt;code&gt;<br><br>&lt;HTML&gt;<br>&lt;HEADER&gt;&lt;!-- um montao de coisa aqui --&gt;&lt;/HEADER&gt;<br>
&lt;BODY&gt;<br>&lt;H1&gt;[%texto_h1%]&lt;/H1&gt;<br><br>&lt;TABLE&gt;<br>[% FOREACH item IN dados%]<br>   &lt;TR&gt;<br>         &lt;td&gt;item.algummetodoouatributo&lt;/td&gt;<br>   &lt;/TR&gt;<br>[% END %] <br>&lt;/TABLE&gt;<br>
<br>&lt;/BODY&gt;<br>&lt;/HTML&gt;<br><br>&lt;/code&gt;<br><br><br>Como vc pode ver, existe um FOREACH dentro do template. Isso faz parte da meta-linguagem q eu mencionei. Ele itera o objeto que eu passei através do método &#39;process&#39;. Qq dúvida escreva aqui, ou entre no irc - <a href="http://irc.perl.org">irc.perl.org</a> - canal #<a href="http://sao-paulo.pm">sao-paulo.pm</a><br>
<br><br><br>Cheers!<br><br><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br clear="all">##########<br><font color="#888888">#::Adimir::#<br>
##########<br>
</font><br>_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br></blockquote></div><br><br clear="all"><br>-- <br>André Garcia Carneiro<br>Analista/Desenvolvedor Perl<br>
<br>