&lt;codigo&gt;<br><br>sub Consulta {<br><br>    use Teste::Model::MySql;<br><br>    my $db = Teste::Model::MySql::Conecta();<br><br>    if ($db) {<br><br>        my $conn = Teste::Model::MySql::Query($db, &quot;SELECT id_cliente, nome FROM cliente&quot;);<br>
<br>        my $ref_fields = $conn-&gt;fetchall_arrayref;<br><br>        return $ref_fields;<br><br>    } else {<br><br>        return 0;<br><br>      } <br><br>}<br><br>&lt;/codigo&gt;<br><br>Agora você tem um AoA:<br>perldoc perldsc: <a href="http://www.perl.org.br/Perldoc/V500807/Perldsc">http://www.perl.org.br/Perldoc/V500807/Perldsc</a><br>
perldoc perlref<br><br>Para pegar o id_cliente e o nome é só fazer agora:<br>&lt;code&gt;<br>foreach my $item (@{ $ref_fields }) {<br><br>print &quot;id_cliente&quot; . $item-&gt;[0] . &quot;\n&quot;;<br>print &quot;nome&quot; . $item-&gt;[1] . &quot;\n&quot;;<br>
}<br>&lt;/code&gt;<br><br>Não precisa de toda aquela volta, entendeu ?<br><br><br>&lt;seu_codigo&gt;<br><br>package Teste::Model::Cliente;<br>sub Consulta {<br>    use Teste::Model::MySql;<br>    my $db = Teste::Model::MySql::Conecta();<br>
    if ($db ne &quot;&quot;) #Não precisa disso, apenas $if($db) é o suficiente.<br>    {<br>        my $conn = Teste::Model::MySql::Query($db, &quot;SELECT id_cliente, nome FROM cliente&quot;);<br>        my (@fields) = (&quot;id_cliente&quot;, &quot;nome&quot;); <br>
        my %results;<br>        @results{@fields} = ();<br>        $conn-&gt;bind_columns(map { \$results{$_} } @fields); <br>        return (\%results, sub { $conn-&gt;fetch() });<br>    }<br>    else<br>    {<br>        return (&quot;false&quot;, &quot;false&quot;); #Não é bom usar isso, retorne undef.<br>
    } <br>}<br><br>&lt;/seu_codigo&gt;<br><br>&lt;seu_codigo&gt;<br>    use Teste::Controller::Cliente;<br><br># - Não jogue HTML desse jeito, use CGI ou Template Toolkit.<br># <a href="http://search.cpan.org/~lds/CGI.pm-3.43/CGI.pm">http://search.cpan.org/~lds/CGI.pm-3.43/CGI.pm</a><br>
# <a href="http://search.cpan.org/~abw/Template-Toolkit-2.20/lib/Template/Toolkit.pod">http://search.cpan.org/~abw/Template-Toolkit-2.20/lib/Template/Toolkit.pod</a><br><br>    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;;<br>
    my ($res, $conn) = Teste::Controller::Cliente::Consulta();<br>    if ($res ne &quot;false&quot;)  #Agora que você colocou undef no lugar de &quot;false&quot; você pode fazer: $if ($ref), muito mais elegante.<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>    }<br>     <br>
    print &quot;&lt;/body&gt;\n&quot;;<br>    print &quot;&lt;/html&gt;\n&quot;;<br><br>&lt;/seu_codigo&gt;<br><br>Você já leu o perldoc perlbot?<br><a href="http://www.perl.org.br/Perldoc/V500807/Perlbot">http://www.perl.org.br/Perldoc/V500807/Perlbot</a><br>
<br>Não use DBI use DBIx::Class<br><a href="http://search.cpan.org/~ash/DBIx-Class-0.08013/lib/DBIx/Class.pm">http://search.cpan.org/~ash/DBIx-Class-0.08013/lib/DBIx/Class.pm</a><br><br>Fazer isso usando Catalyst é muito mais simples, é um framework MVC no próprio manual existem alguns exemplos simples.<br>
O Thiago, fez um tutorial muito bom:<br><a href="http://www.maluco.com.br/perl/catalyst.html">http://www.maluco.com.br/perl/catalyst.html</a><br><br>[]s<br><br><div class="gmail_quote">2009/4/15 Ricardo Zanotto Zaniol <span dir="ltr">&lt;<a href="mailto:zanottors@gmail.com">zanottors@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;"><div><div></div><div class="h5"><p>Olá pessoal, estou com um problema na criação de métodos no Perl, a minha estrutura atual é a seguinte:</p>

<p>C:\perl\lib\Teste\Controller</p>
<p>Na pasta controller (business manager) tenho o arquivo <a href="http://cliente.pm" target="_blank">cliente.pm</a></p>
<p>package Teste::Controller::Cliente;<br>sub Consulta {<br>    use Teste::Model::Cliente; <br>    my ($res, $conn) = Teste::Model::Cliente::Consulta();<br>    return($res, $conn);<br>}<br>========================================================================= </p>


<p>C:\perl\lib\Teste\Model</p>
<p>Na pasta Model (Banco de Dados) tenho dois arquivos o <a href="http://cliente.pm" target="_blank">cliente.pm</a></p>
<p>package Teste::Model::Cliente;<br>sub Consulta {<br>    use Teste::Model::MySql; <br>    my $db = Teste::Model::MySql::Conecta();<br>    if ($db ne &quot;&quot;)<br>    {<br>        my $conn = Teste::Model::MySql::Query($db, &quot;SELECT id_cliente, nome FROM cliente&quot;);<br>

        my (@fields) = (&quot;id_cliente&quot;, &quot;nome&quot;);  <br>        my %results;<br>        @results{@fields} = ();<br>        $conn-&gt;bind_columns(map { \$results{$_} } @fields);  <br>        return (\%results, sub { $conn-&gt;fetch() });<br>

    }<br>    else<br>    {<br>        return (&quot;false&quot;, &quot;false&quot;);<br>    }  <br>}<br>====================================================<br> <br>E o outro arquivo MySql.pm</p>
<p>package Teste::Model::MySql;<br>use DBI;</p>
</div></div><p>my $driver   = &quot;mysqlPP&quot;;</p><div class="im"><br>my $server   = &quot;localhost&quot;;<br>my $database = &quot;banco&quot;;<br>my $user     = &quot;usuario&quot;;<br>my $password = &quot;senha&quot;;<br>
 <br></div>sub Conecta<div><div></div><div class="h5"><br>{<br>
   my $url = &quot;DBI:$driver:$database:$server&quot;;<br>   my $dbh = DBI-&gt;connect( $url, $user, $password,<br>                               { PrintError =&gt; 0 });;<br>   return($dbh);<br>}<br>sub Query<br>{<br>   my($conn, $consulta) = @_;<br>

   my $sql = qq{ $consulta };<br>   my $sth = $conn-&gt;prepare( $sql );<br>   $sth-&gt;execute() ;  <br>   return($sth);<br>}<br>========================================================</div></div><div><div></div><div class="h5">

<p>pasta onde estaria o site web</p>
<p>C:\inetpub\wwwroot\ListaCliente.pl<br> <br>use Teste::Controller::Cliente;<br>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;;<br>my ($res, $conn) = Teste::Controller::Cliente::Consulta();<br>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>}<br>  <br>print &quot;&lt;/body&gt;\n&quot;;<br>print &quot;&lt;/html&gt;\n&quot;;<br>==========================================================</p>


<p>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) </p>
<p>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.</p>
<p>Estou usando esta estrutura em uma maquina com windows2003 + IIS + MySql.</p>
<p>Obrigado...</p>
</div></div><br>_______________________________________________<br>
Cascavel-pm mailing list<br>
<a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br></blockquote></div><br><br clear="all"><br>-- <br><a href="http://mantovanihouse.blogspot.com/">http://mantovanihouse.blogspot.com/</a><br>
This is my poney:<br>-------(\_------------_/)-----------<br>-------)--(----------)--(-----------<br>------(----(---------)----)----------<br>-------)----(-------)----(-----------<br>-------(----(-------)----)-----------<br>
--------\_-(\\.---.//)-_/------------<br>----------\)&#39; -8--8- &#39;(/--------------<br>-----------/------------\---------------<br>----------(--)--------(--)--------------<br>------------(_c__c_)----------------<br>----------------------------------------<br>
perl -MLWP::Simple -le &#39;grep{ print $1 if /href=&quot;(http.+?)&quot;/}split($/,get(&quot;<a href="http://www.perl.org.br">http://www.perl.org.br</a>&quot;))&#39;<br>