<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Shonorio,<div><br></div><div>Eu te recomendo usar MooseX::Method::Signatures[1] para validar os argumentos dos seus métodos, por uma questão de design.</div><div><br></div><div>[1] - <a href="https://metacpan.org/module/MooseX::Method::Signatures">https://metacpan.org/module/MooseX::Method::Signatures</a></div><div><br><div apple-content-edited="true">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">-- <br>Software Engineer<br>Just Another Perl Hacker<br>Daniel Mantovani +5511 8538-9897<br>XOXO</div></div>
</div>
<br><div><div>On Jun 21, 2012, at 1:43 PM, Solli Honorio wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Pessoal,<div><br></div><div>Este é apenas um compartilhamento de experiência que pode ser útil aos demais, sobre a minha frustação do perl não ter um try-catch de leitura simples e nativo. </div><div><br></div><div>Tenho observado que o Try::Tiny está sendo utilizado em vários módulos sérios e com grande utilização, em substituição ao eval{ ... } (já que apenas os letrados em perl entende isto).</div>

<div><br></div><div>As coisas estavam encaminhando bem, até que eu resolvi 'melhorar o meu código' e passei a ter uma coisa do tipo : </div><div><br></div><div><code></div><div><div><font face="courier new, monospace">use Try::Tiny;</font></div>

<div><font face="courier new, monospace">use Params::Validate qw(:all);</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">sub foo {</font></div><div><font face="courier new, monospace">  my $self  = shift;</font></div>

<div><font face="courier new, monospace">  my $param = try { validate(@_, { name => { SCALAR } } ) } catch { ... };</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">    ...</font></div>

<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">}</font></div></div><div></code></div><div><br></div><div>E aí todos os meus teste falharam, depois de algumas análise descobri (sem muita surpresa) que o try { } localiza o @_ (claro, isto é um função qualquer) e  com valor inválido. Este problema eu não tenho com o eval { }. </div>

<div><br></div><div>Bom, eu ainda vou continuar a utilizar o Try::Tiny, por enquanto, mas é neste momento que a gente percebe que estes 'quebra-galho' no perl é chato !</div><div><br></div><div>Solli Honorio</div>

<div><br></div><div><br></div><div>-- <br>"o animal satisfeito dorme". - Guimarães Rosa<br>
</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></div></body></html>