<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt">Caros,<br><br>se entendi bem, o given e o when, assim como o case, são mais das formas alternativas ("há muitas maneiras de se fazer a mesma coisa em Perl") de se fazer "if-elsif-else" com linguagem mais coloquial. Certo?<br><br><div>Seria o mesmo que:<br><br></div><div>my $var = 'Carneirao';</div><div>if ($var eq 'Carneirao'){say "Opa, sou eu!";}</div>elsif ($var =~ /Sbrebows/){ say 'WTF???';}<div><span>else {</span><span>say "Nao sei o que quer dizer...";}<br></span></div><div><br></div><div>Com a vantagem de economizar o  ($var eq/=~ ...).<br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;">Correto?</div><div>Ou estou perdendo alguma coisa muito especial, que não percebi ainda?</div><div><br></div><div style="color:
 rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;">[]'s</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;">Nicole<br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><br></div>  <div style="font-family: times new roman, new york, times, serif; font-size: 12pt;"> <div style="font-family: times new roman, new york, times, serif; font-size:
 12pt;"> <div dir="ltr"> <font face="Arial" size="2"> <hr size="1">  <b><span style="font-weight:bold;">De:</span></b> Andre Carneiro <andregarciacarneiro@gmail.com><br> <b><span style="font-weight: bold;">Para:</span></b> Perl Mongers Rio de Janeiro <rio-pm@pm.org> <br> <b><span style="font-weight: bold;">Enviadas:</span></b> Quinta-feira, 13 de Dezembro de 2012 9:36<br> <b><span style="font-weight: bold;">Assunto:</span></b> Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck<br> </font> </div> <br><div id="yiv546700629">Meio estranho você não entender when e entender given, mas vamos lá! Normalmente eu mandaria um RTFM, mas já estou velho e manso ultimamente...<br><div><br></div><div>given é equivalente a 'switch'</div><div><br></div>
<div>when é equivalente a 'case'</div><div><br></div><div>Então, se você estiver usando Perl 5.10 ainda,</div><div><br></div><div><code></div><div>use feature qw/switch say/; #Isso sim, é escroto pra caramba! Se a função chama-se 'given', pra que mudar o nome para switch??? </div>
<div>use strict;</div><div>use warnings;</div><div>#Ou dane-se tudo isso e faça 'use common::sense';</div><div><br></div><div><br></div><div>my $var = 'Carneirao';</div><div><br></div><div>given($var){</div>
<div>   when( 'Carneirao'){</div><div>       say "Opa, sou eu!";</div><div>   }</div><div>   when(/Sbrebows/){</div><div>      say 'WTF???';</div><div>   }</div><div>   default {</div><div>      say "Nao sei o que quer dizer...";</div>
<div>   }</div><div>}</div><div><br></div><div>#Antigamente fazíamos assim:</div><div><br></div><div>use Switch;</div><div><br></div><div><br></div><div>switch($var){</div><div>     case 'Carneirao' { say "Opa, sou eu!";}</div>
<div>     case /Sbrebows/ {say "WTF";}</div><div>     else { say "Nao sei o que quer dizer";}</div><div>}</div><div><br></div><div><br></div><div>#Mas, do Perl 5.10 em diante, o módulo Switch está com status  'deprecated', então use a primeira opção!</div>
<div><br></div><div></code></div><div><br></div><div><br><div><div>Agora sim! Para mais informações RTFM my friend!!!</div><div><br></div><div><br></div><div><a rel="nofollow" target="_blank" href="http://perldoc.perl.org/Switch.html">http://perldoc.perl.org/Switch.html</a></div>
<div><br></div><div><a rel="nofollow" target="_blank" href="http://perldoc.perl.org/perlsyn.html#Switch-Statements">http://perldoc.perl.org/perlsyn.html#Switch-Statements</a></div><div><br></div><div><br></div><div>:-)</div><div>Cheers!</div><div><br></div>
<div><br></div><div><br><br><div class="yiv546700629gmail_quote">2012/12/13 breno <span dir="ltr"><<a rel="nofollow" ymailto="mailto:breno@rio.pm.org" target="_blank" href="mailto:breno@rio.pm.org">breno@rio.pm.org</a>></span><br><blockquote class="yiv546700629gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
2012/12/12 Aureliano Guedes <<a rel="nofollow" ymailto="mailto:guedes_1000@hotmail.com" target="_blank" href="mailto:guedes_1000@hotmail.com">guedes_1000@hotmail.com</a>>:<br>
<div class="yiv546700629im">> Ainda não tinha me aventurado nas novidades do Perl 5.16.<br>
><br>
> o when eu entendi, mas o given não, alguem poderia me explicar o uso do<br>
> given??<br>
><br>
> O break ja funciona no 5.16?? se sim, como???<br>
><br>
<br>
</div>given/when existe no Perl desde a versão 5.10, com direito a default,<br>
continue e break =)<br>
<br>
Pra saber como, dá uma olhada aqui ó:<br>
<br>
<a rel="nofollow" target="_blank" href="http://perldoc.perl.org/perlsyn.html#Switch-Statements">http://perldoc.perl.org/perlsyn.html#Switch-Statements</a><br>
<br>
tem tudo explicadinho, inclusive o fato de que given() é experimental<br>
- a forma recomendada de definir o tópico é com for().<br>
<br>
Boa diversão!<br>
<br>
[]s<br>
<span class="yiv546700629HOEnZb"><font color="#888888"><br>
-b<br>
</font></span><div class="yiv546700629HOEnZb"><div class="yiv546700629h5">_______________________________________________<br>
Rio-pm mailing list<br>
<a rel="nofollow" ymailto="mailto:Rio-pm@pm.org" target="_blank" href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
<a rel="nofollow" target="_blank" href="http://mail.pm.org/mailman/listinfo/rio-pm">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>André Garcia Carneiro<br>Software Engineer<br>(11)982907780<br>
</div></div></div>
</div><br>_______________________________________________<br>Rio-pm mailing list<br><a ymailto="mailto:Rio-pm@pm.org" href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br><a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br><br> </div> </div>  </div></body></html>