<div class="gmail_quote">
<p style="MARGIN: 0cm 0cm 10pt"><font face="Calibri" size="3">Olá pessoal, estou com um problema na criação de métodos no Perl, a minha estrutura atual é a seguinte:</font></p>
<p style="MARGIN: 0cm 0cm 10pt"><font face="Calibri" size="3">C:\perl\lib\Teste\Controller</font></p>
<p style="MARGIN: 0cm 0cm 10pt"><font size="3"><font face="Calibri">Na pasta controller (business manager) tenho o arquivo <a href="http://cliente.pm/" target="_blank">cliente.pm</a></font></font></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">package Teste::Controller::Cliente;</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">sub Consulta {</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>    </span>use Teste::Model::Cliente; </span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>    </span>my ($res, $conn) = Teste::Model::Cliente::Consulta();</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>    </span>return($res, $conn);</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">}</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><font face="Calibri" size="3">========================================================================= </font></p>
<p style="MARGIN: 0cm 0cm 10pt"><font face="Calibri" size="3">C:\perl\lib\Teste\Model</font></p>
<p style="MARGIN: 0cm 0cm 10pt"><font face="Calibri" size="3">Na pasta Model (Banco de Dados) tenho dois arquivos o <a href="http://cliente.pm/" target="_blank">cliente.pm</a></font></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">package Teste::Model::Cliente;</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">sub Consulta {</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>    </span>use Teste::Model::MySql; </span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>    </span>my $db = Teste::Model::MySql::Conecta();</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span> </span><span>   </span>if ($db ne &quot;&quot;)</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>    </span>{</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>        </span>my $conn = Teste::Model::MySql::Query($db, &quot;SELECT id_cliente, nome FROM cliente&quot;);</span></p>

<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>        </span>my (@fields) = (&quot;id_cliente&quot;, &quot;nome&quot;);<span>  </span></span></p>

<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>        </span>my %results;</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>        </span>@results{@fields} = ();</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>        </span>$conn-&gt;bind_columns(map { \$results{$_} } @fields);<span>  </span></span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>        </span>return (\%results, sub { $conn-&gt;fetch() });</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>    </span>}</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>    </span>else</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>    </span>{</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>        </span>return (&quot;false&quot;, &quot;false&quot;);</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>    </span>}<span>  </span></span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">}</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"> </span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%">E o outro arquivo MySql.pm</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%"><span>  </span></span><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">package Teste::Model::MySql;</span></p>

<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span> </span>use DBI;</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"></span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">sub Conecta</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">{</span></p><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>   </span>my $driver<span>   </span>= &quot;mysqlPP&quot;;</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>   </span>my $server<span>   </span>= &quot;localhost&quot;;</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>   </span>my $database = &quot;banco&quot;;</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>   </span>my $user<span>     </span>= &quot;usuario&quot;;</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>   </span>my $password = &quot;senha&quot;;</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"></span> </p></span></span>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>   </span>my $url<span> </span>= &quot;DBI:$driver:$database:$server&quot;;</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>   </span>my $dbh = DBI-&gt;connect( $url, $user, $password,</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>                               </span>{ PrintError =&gt; 0 });;</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>   </span>return($dbh);</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">}</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">sub Query</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">{</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>   </span>my($conn, $consulta) = @_;</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>   </span>my $sql = qq{ $consulta };</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>   </span>my $sth = $conn-&gt;prepare( $sql );</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>   </span>$sth-&gt;execute() ;<span>  </span></span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;"><span>   </span>return($sth);</span></p>
<div style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">}</span></div>
<div style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">========================================================</span></div>
<div style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">
<p style="MARGIN: 0cm 0cm 10pt"><font face="Calibri" size="3">pasta onde estaria o site web</font></p>
<p style="MARGIN: 0cm 0cm 10pt"><font face="Calibri" size="3">C:\inetpub\wwwroot\ListaCliente.pl</font></p>
<p style="MARGIN: 0cm 0cm 10pt"><font face="Calibri" size="3"> </font></p>
<p style="MARGIN: 0cm 0cm 10pt"><font face="Calibri" size="3">use Teste::Controller::Cliente;</font></p>
<p style="MARGIN: 0cm 0cm 10pt"><font face="Calibri" size="3">print &quot;Content-type: text/html\n\n&quot;;<br>print &quot;&lt;html&gt;\n&quot;;<br>print &quot;&lt;head&gt;\n&quot;;<br>print &quot;  &lt;title&gt;Lista Clientes&lt;/title&gt;\n&quot;;<br>
print &quot;&lt;/head&gt;\n&quot;;<br>print &quot;&lt;body&gt;\n\n&quot;;</font></p>
<p style="MARGIN: 0cm 0cm 10pt"><font face="Calibri" size="3">my ($res, $conn) = Teste::Controller::Cliente::Consulta();</font></p>
<p style="MARGIN: 0cm 0cm 10pt"><font face="Calibri" size="3">if ($res ne &quot;false&quot;) <br>{<br>    while ($conn-&gt;()) {<br>        print &quot;$res-&gt;{id_cliente} - \n&quot;;<br>        print &quot;$res-&gt;{nome} \n&quot;;<br>
        print &quot;&lt;br&gt;&quot;;<br>    }<br>}</font></p>
<p style="MARGIN: 0cm 0cm 10pt"><font face="Calibri" size="3">  <br>print &quot;&lt;/body&gt;\n&quot;;<br>print &quot;&lt;/html&gt;\n&quot;;</font></p></span></div>
<div style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">==========================================================</span></div>
<div style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">Essa estrutura até funciona mas quando eu manipulo os registros na camada controller (Cliente.pm) eu nao consigo listar novamente os registros na camada de visualização(ListaCliente.pl) </span></div>

<div style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">Gostaria de saber se alguem tem um exemplo melhor de como dividir a aplicação em camadas, e como eu poderia modificar essa estrutura de uma forma mais simplificada.</span></div>

<div style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">Estou usando esta estrutura em uma maquina com windows2003 + IIS + MySql.</span></div>
<div style="MARGIN: 0cm 0cm 10pt"><span style="FONT-SIZE: 8pt; LINE-HEIGHT: 115%; FONT-FAMILY: &#39;Courier New&#39;">Obrigado...</span></div></div>