<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>Blabos, e se você tiver 2 formulários na mesma página, por exemplo, um de login e um de cadastro ? Vai ter que melhorar na gambi né ? heheheheheh</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">   </span>Se mudar o nome do campo entao… chora hehehe</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Se precisar fazer um "pirulito" para importar para a base a validação não é aproveitável… esqueçe</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>Marcar o campo errado em vermelho vai precisar de mais gambi :D</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>Tem muitas vantagens usar o Data::Manager </div><div><br></div><br><div><div>Em 03/09/2013, às 18:30, Blabos de Blebe <<a href="mailto:blabos@gmail.com">blabos@gmail.com</a>> escreveu:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr">Opa,<div><br></div><div>O meu caso é muito simples (pequeno) e o meu tempo é curto. O que foi mais rápido pra mim foi essa tosqueria aqui:</div><div><br></div><div>No controller:</div><div><br></div><div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(178, 55, 243); "><span style="color:rgb(178,69,243)">...</span></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(178, 55, 243); "><span style="color:rgb(178,69,243)">my </span><span style="">$</span>errors<span style=""> </span> <span style="color:rgb(193,53,0)">= [];</span></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; min-height: 15px; "><br></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(194, 27, 45); ">## not null</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(178, 55, 243); "><span style="color:rgb(178,69,243)">foreach my </span><span style="">$</span>field<span style=""> </span><span style="color:rgb(193,53,0)">( </span>keys <span style="">%</span>{$fields}<span style=""> </span><span style="color:rgb(193,53,0)">) {</span></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(178, 55, 243); "><span style="color:rgb(193,53,0)">    </span>push <span style="">@</span>{$errors}<span style="color:rgb(193,53,0)">, </span><span style="color:rgb(4,51,255)">'empty_' </span><span style="color:rgb(193,53,0)">. </span><span style="">$</span>field</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(178, 55, 243); ">      <span style="color:rgb(178,69,243)">unless </span><span style="">$</span>fields<span style="color:rgb(193,53,0)">->{</span><span style="">$</span>field<span style="color:rgb(193,53,0)">};</span></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(193, 53, 0); ">}</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; min-height: 15px; "><br></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(194, 27, 45); ">## unique</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(178, 69, 243); ">foreach my <span style="">$</span><span style="color:rgb(178,55,243)">field</span><span style=""> </span><span style="color:rgb(193,53,0)">(</span>qw{ username email }<span style="color:rgb(193,53,0)">) {</span></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(178, 55, 243); "><span style="color:rgb(193,53,0)">    </span>push <span style="">@</span>{$errors}<span style="color:rgb(193,53,0)">, </span><span style="color:rgb(4,51,255)">'already_' </span><span style="color:rgb(193,53,0)">. </span><span style="">$</span>field</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(178, 55, 243); ">      <span style="color:rgb(178,69,243)">if </span><span style="">$</span>rs_user<span style="color:rgb(193,53,0)">-></span><span style="">find</span><span style="color:rgb(193,53,0)">( { </span><span style="">$</span>field<span style=""> </span><span style="color:rgb(193,53,0)">=> </span><span style="">$</span>fields<span style="color:rgb(193,53,0)">->{</span><span style="">$</span>field<span style="color:rgb(193,53,0)">} } );</span></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(193, 53, 0); ">}</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; min-height: 15px; "><br></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(194, 27, 45); ">## invalid email</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(4, 51, 255); "><span style="color:rgb(178,55,243)">push </span><span style="">@</span><span style="color:rgb(178,55,243)">{$errors}</span><span style="color:rgb(193,53,0)">, </span>'invalid_email'</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; "><span style="color:rgb(4,51,255)">  </span><span style="color:rgb(178,69,243)">unless </span>Email::Valid<span style="color:rgb(193,53,0)">-></span>address<span style="color:rgb(193,53,0)">( </span>$<span style="color:rgb(178,55,243)">fields</span><span style="color:rgb(193,53,0)">->{</span>email<span style="color:rgb(193,53,0)">} );</span></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; min-height: 15px; "><br></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(178, 55, 243); "><span style="color:rgb(178,69,243)">if </span><span style="color:rgb(193,53,0)">( </span><span style="">@</span>{$errors}<span style=""> </span><span style="color:rgb(193,53,0)">> </span><span style="color:rgb(178,49,0)">0 </span><span style="color:rgb(193,53,0)">) {</span></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(193, 53, 0); ">    <span style="">$</span><span style="color:rgb(178,55,243)">c</span>-><span style="">stash</span>->{<span style="">user</span>}   = <span style="">$</span><span style="color:rgb(178,55,243)">fields</span>;</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(193, 53, 0); ">    <span style="">$</span><span style="color:rgb(178,55,243)">c</span>-><span style="">stash</span>->{<span style="">errors</span>} = <span style="">$</span><span style="color:rgb(178,55,243)">errors</span>;</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(178, 69, 243); "><span style="color:rgb(193,53,0)">    </span>return<span style="color:rgb(193,53,0)">;</span></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(193, 53, 0); ">}</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(193, 53, 0); ">...</div></div><div class="gmail_extra"><div class="gmail_quote">


<br></div><div class="gmail_quote">No template:</div><div class="gmail_quote">
<br></div><div class="gmail_quote"><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">    [% IF errors.size <span style="text-decoration:underline">></span> 0 %]</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(57, 51, 255); "><span style="">        </span><span style="color:rgb(0,145,147)"><</span><span style="color:rgb(78,145,146)">div</span><span style=""> </span><span style="color:rgb(147,33,146)">data-alert</span><span style=""> </span><span style="color:rgb(147,33,146)">class</span><span style="">=</span>"alert-box alert"<span style="color:rgb(0,145,147)">></span></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">            [% FOREACH error IN errors %]</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">                [% msg_block = 'msg_' _ error %]</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">                [% PROCESS $msg_block %]<span style="color:rgb(0,145,147)"><</span><span style="color:rgb(78,145,146)">br</span><span style="color:rgb(0,145,147)">></span></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">            [% END %]</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; color: rgb(57, 51, 255); "><span style="">            </span><span style="color:rgb(0,145,147)"><</span><span style="color:rgb(78,145,146)">a</span><span style=""> </span><span style="color:rgb(147,33,146)">href</span><span style="">=</span>"#"<span style=""> </span><span style="color:rgb(147,33,146)">class</span><span style="">=</span>"close"<span style="color:rgb(0,145,147)">></span>&times;<span style="color:rgb(0,145,147)"></</span><span style="color:rgb(78,145,146)">a</span><span style="color:rgb(0,145,147)">></span></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">        <span style="color:rgb(0,145,147)"></</span><span style="color:rgb(78,145,146)">div</span><span style="color:rgb(0,145,147)">></span></div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">    [% END %]</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; ">...</div><div style="margin: 0px; font-size: 11px; font-family: Monaco; "><br></div><p style="margin:0px;font-size:11px;font-family:Monaco">



</p><div style="margin: 0px; ">[% BLOCK msg_empty_full_name %]</div><div style="margin: 0px; ">    Você precisa preencher o seu nome completo.</div><div style="margin: 0px; ">[% END %]</div><div style="margin: 0px; min-height: 15px; "><br></div><div style="margin: 0px; ">[% BLOCK msg_empty_username %]</div><div style="margin: 0px; ">    Você precisa preencher o seu username.</div><div style="margin: 0px; ">[% END %]</div><div style="margin: 0px; ">...</div><div style="margin: 0px; "><br></div><div><br class="webkit-block-placeholder"></div></div><div class="gmail_quote"><br></div><div class="gmail_quote">Deve ter formas mais inteligentes de fazer isso, mas no momento, a mais inteligente pra mim, é a que eu consigo fazer mais rápido. Esse é meu "único" form.</div>



<div class="gmail_quote"><br></div><div class="gmail_quote">[]'s</div><div class="gmail_quote"><br></div><div class="gmail_quote"><br></div><div class="gmail_quote">2013/9/3 Solli Honorio <span dir="ltr"><<a href="mailto:shonorio@gmail.com" target="_blank">shonorio@gmail.com</a>></span><br>



<blockquote class="gmail_quote" 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">Blabos, o que você está imaginando para validar ? Estilo old-school com um encadeamento de if ? Dispatch table ? NDA ?<div>



<br></div><div>Abraços,</div><div><br></div><div>Solli Honorio</div></div><div class="gmail_extra">

<br><br><div class="gmail_quote">Em 3 de setembro de 2013 16:35, Blabos de Blebe <span dir="ltr"><<a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a>></span> escreveu:<div><br><blockquote class="gmail_quote" 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">Em alguns casos, complexidade é um pouco ponto de vista.<div><br></div><div>Acho que entendi a abordagem do mantovani, mas pro meu caso específico, acho que é também o overhead, já que eu só valido 4 campos em uma situação eventual. Estou cogitando nem usar o Data::Manager.</div>







<div><br></div><div>Se fosse um cazilhao de campos sendo validados constantemente, acho que valeira a pena.</div><div><br></div><div>Mantovani, cuidado pra não ficar aparafusando pregos, certo!?</div>

<div><br></div><div>[]'s</div></div><div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/9/3 Solli Honorio <span dir="ltr"><<a href="mailto:shonorio@gmail.com" target="_blank">shonorio@gmail.com</a>></span><br>







<blockquote class="gmail_quote" 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">Sério mesmo Mantovani que vc acha que um sistema de fila é a solução para eu validar se todos os campos de um formulário estão dentro do aguardado para trabalhar no  banco de dados ?<div>







<br></div><div>Mantovani, só posso dizer que estou orgulhoso de você... vejo que você terá um excelente futuro na industria de tecnologia (coisa que eu não tive), pois este é bem o comportamento dos vendedores de TI. Você está agregando complexidade numa lugar que estou tentando agregar simplicidade :D !!!</div>









<div><br></div><div>Abraços,</div><div><br></div><div>Solli Honorio</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">Em 3 de setembro de 2013 14:58, Daniel de Oliveira Mantovani <span dir="ltr"><<a href="mailto:daniel.oliveira.mantovani@gmail.com" target="_blank">daniel.oliveira.mantovani@gmail.com</a>></span> escreveu:<div>







<div><br>

<blockquote class="gmail_quote" 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">2013/9/3 Solli Honorio <<a href="mailto:shonorio@gmail.com" target="_blank">shonorio@gmail.com</a>>:<br>




<div>> Lucas,<br>
><br>
> Obrigado pelo retorno. Ontem a noite estudei o código do Data::Manager e ví<br>
> que realmente não rola fazer o que eu estava querendo fazer (passar uma<br>
> pilha de mensagem e receber de acordo com o contexto) e ai estou<br>
> encaminhando para a mesma solução que você.<br>
<br>
" o que eu estava querendo fazer (passar uma pilha de mensagem e<br>
receber de acordo com o contexto)"<br>
<br>
</div>Shonorio, repetindo o AMQP se encaixa perfeitamente. Eu sugiro que<br>
você leia o link que eu te enviei. Se um serviço na sua máquina vai te<br>
poupar centenas de linhas de código, talvez nessa situação, nesse<br>
contexto obscuro no qual não foi definido pelo interlocutor seja uma<br>
boa.<br>
<br>
Se você acha que isso é demais para você, eu sinto muito que alguém<br>
com pelo menos 15/20 anos de experiência ainda não saiba formular uma<br>
pergunta. Perguntas genéricas, respostas genéricas. E ainda acho<br>
extremamente desnecessário o seu ataque gratuito, mas se você ainda<br>
não percebeu isso afasta as pessoas da lista.<br>
<div><br>
><br>
> Como vc faz com o I18N ?<br>
><br>
> O Renato Cron publicou um 'template'  ( <a href="https://github.com/AwareTI/MyApp" target="_blank">https://github.com/AwareTI/MyApp</a> )<br>
> de como eles estão utilizando o Data::Manager. Estudei o código e achei<br>
> engenhoso, mas ainda quero manter um melhor controle do ResultSet porquê<br>
> quero devolver uma estrutura mais complexa de informação.<br>
><br>
> Abraços,<br>
><br>
> Solli Honorio<br>
><br>
><br>
><br>
> 2013/9/3 Lucas Oliveira <<a href="mailto:lucasmateus.oliveira@gmail.com" target="_blank">lucasmateus.oliveira@gmail.com</a>><br>
>><br>
>><br>
>> Normalmente eu uso sempre com I18N mas da pra quebrar o galho assim<br>
>><br>
>> <code><br>
>> #!/usr/bin/env perl<br>
>><br>
>> use common::sense;<br>
>> use Data::Manager;<br>
>> use Data::Verifier;<br>
>><br>
>> my %msg_data = (<br>
>>    missing_name_last => 'Nao foi informado o campo name_last, seu idiota<br>
>> !',<br>
>> );<br>
>><br>
>> sub messages { $msg_data{$_[0]} || $_[0] }<br>
>><br>
>> my $dm = Data::Manager->new;<br>
>> my $dv = Data::Verifier->new(<br>
>>     filters => [ qw(trim) ],<br>
>>         profile => {<br>
>>             name_first => {<br>
>>                 required => 1,<br>
>>                 type     => 'Str',<br>
>>                 filters  => [ qw(collapse) ]<br>
>>             },<br>
>>             name_last => {<br>
>>                 required => 1,<br>
>>                 type     => 'Str',<br>
>>                 filters  => [ qw(collapse) ]<br>
>>             },<br>
>>             age  => {<br>
>>                 type        => 'Int'<br>
>>             },<br>
>>             sign => {<br>
>>                 required    => 1,<br>
>>                 type        => 'Str'<br>
>>             }<br>
>>         }<br>
>>     );<br>
>><br>
>> $dm->set_verifier( name => $dv );<br>
>> $dm->verify( name => { name_first => 'Solli' });<br>
>><br>
>> if (!$dm->success) {<br>
>>    print &messages( $_->msgid ).$/<br>
>>       foreach (@{ $dm->messages->messages });<br>
>> }<br>
>> </code><br>
>><br>
>><br>
>> Em 02/09/2013, às 11:10, Solli Honorio <<a href="mailto:shonorio@gmail.com" target="_blank">shonorio@gmail.com</a>> escreveu:<br>
>><br>
>> Pessoal,<br>
>><br>
>> Estou tentando configurar uma mensagem padronização no Data::Manager, mas<br>
>> não está funcionando. Alguém aqui já utilizou o Data::Manager para saber se<br>
>> é possível fazer isto que eu quero ?<br>
>><br>
>> O código abaixo, estou criando uma mensagem e adicionando no Data::Manger,<br>
>> porquê eu imaginei que quando ocorrer o problema dentro do escopo e msgid,<br>
>> eu teria o texto padronizado, mas o que estou recebendo é mais uma pilha de<br>
>> mensagem, mesmo quando não existe o erro.<br>
>><br>
>> <code><br>
>> #!/usr/bin/env perl<br>
>> use common::sense;<br>
>> use Data::Manager;<br>
>> use Data::Verifier;<br>
>> use Data::Printer;<br>
>><br>
>> my $msg = Message::Stack->new;<br>
>> $msg->add({<br>
>>     msgid   => 'missing_name_last',<br>
>>     level   => 'error',<br>
>>     scope   => 'name1',<br>
>>     subject => 'name_last',<br>
>>     text    => 'Não foi informado o campo name_last, seu idiota !'} );<br>
>><br>
>> my $dm = Data::Manager->new( { messages => $msg } );<br>
>> my $dv = Data::Verifier->new(<br>
>>     filters => [ qw(trim) ],<br>
>>         profile => {<br>
>>             name => {<br>
>>                 required => 1,<br>
>>                 type     => 'Str',<br>
>>                 filters  => [ qw(collapse) ]<br>
>>             },<br>
>>             age  => {<br>
>>                 type        => 'Int'<br>
>>             },<br>
>>             sign => {<br>
>>                 required    => 1,<br>
>>                 type        => 'Str'<br>
>>             }<br>
>>         }<br>
>>     );<br>
>><br>
>><br>
>> };<br>
>><br>
>><br>
>> $dm->set_verifier('name1', $verifier);<br>
>> $dm->verify('name1', { name_last => 'Honorio', name_first => 'Solli' });<br>
>><br>
>> my $results = $dm->get_results('name1');<br>
>> my $stack   = $dm->messages_for_scope('name1');<br>
>><br>
>> say $results->success;<br>
>><br>
>> say "Is invalid name_first ", $results->is_invalid('name_first');<br>
>> say "Is invalid name_last ",  $results->is_invalid('name_last');  # yes<br>
>><br>
>> say "Is missing name_first ", $results->is_missing('name_first'); # no<br>
>> say "Is missing is_missing ", $results->is_missing('name_last'); # yes<br>
>><br>
>> say "Missing count ", $results->missing_count;<br>
>><br>
>> say "Count : ",  $stack->count ;<br>
>> p $stack->get_message( 0 );<br>
>> p $stack->get_message( 1 );<br>
>><br>
>> </code><br>
>><br>
>><br>
>> --<br>
>> "o animal satisfeito dorme". - Guimarães Rosa<br>
>> =begin disclaimer<br>
>>   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>> SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
>> L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
>> =end disclaimer<br>
>><br>
>><br>
>><br>
>> =begin disclaimer<br>
>>    Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>>  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
>>  L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
>> =end disclaimer<br>
>><br>
><br>
><br>
><br>
> --<br>
> "o animal satisfeito dorme". - Guimarães Rosa<br>
><br>
> =begin disclaimer<br>
>    Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
>  L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
> =end disclaimer<br>
><br>
<br>
<br>
<br>
--<br>
<br>
</div><div>-dom<br>
<br>
--<br>
<br>
Daniel de Oliveira Mantovani<br>
Business Analytic Specialist<br>
Perl Evangelist /Astrophysics hobbyist.<br>
<a href="tel:%2B55%2011%209%208538-9897" value="+5511985389897" target="_blank">+55 11 9 8538-9897</a><br>
XOXO<br>
</div><div>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
</div></blockquote></div></div></div><div><br><br clear="all"><div><br></div>-- <br>"o animal satisfeito dorme". - Guimarães Rosa
</div></div>
<br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br></div>
</div><br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div></div><div><br><br clear="all"><div><br></div>-- <br>"o animal satisfeito dorme". - Guimarães Rosa
</div></div>
<br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br></div></div>
=begin disclaimer<br>   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/">http://sao-paulo.pm.org/</a><br> SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br> L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>=end disclaimer<br></blockquote></div><br></body></html>