Caros,

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?


Seria o mesmo que:


my $var = 'Carneirao';
if ($var eq 'Carneirao'){say "Opa, sou eu!";}elsif ($var =~ /Sbrebows/){ say 
'WTF???';}
else {say "Nao sei o que quer dizer...";}


Com a vantagem de economizar o  ($var eq/=~ ...).

Correto?
Ou estou perdendo alguma coisa muito especial, que não percebi ainda?


[]'s
Nicole




________________________________
 De: Andre Carneiro <andregarciacarne...@gmail.com>
Para: Perl Mongers Rio de Janeiro <rio-pm@pm.org> 
Enviadas: Quinta-feira, 13 de Dezembro de 2012 9:36
Assunto: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
 

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...


given é equivalente a 'switch'

when é equivalente a 'case'

Então, se você estiver usando Perl 5.10 ainda,

<code>
use feature qw/switch say/; #Isso sim, é escroto pra caramba! Se a função 
chama-se 'given', pra que mudar o nome para switch??? 
use strict;
use warnings;
#Ou dane-se tudo isso e faça 'use common::sense';


my $var = 'Carneirao';

given($var){
   when( 'Carneirao'){
       say "Opa, sou eu!";
   }
   when(/Sbrebows/){
      say 'WTF???';
   }
   default {
      say "Nao sei o que quer dizer...";
   }
}

#Antigamente fazíamos assim:

use Switch;


switch($var){
     case 'Carneirao' { say "Opa, sou eu!";}
     case /Sbrebows/ {say "WTF";}
     else { say "Nao sei o que quer dizer";}
}


#Mas, do Perl 5.10 em diante, o módulo Switch está com status  'deprecated', 
então use a primeira opção!

</code>



Agora sim! Para mais informações RTFM my friend!!!


http://perldoc.perl.org/Switch.html

http://perldoc.perl.org/perlsyn.html#Switch-Statements


:-)
Cheers!





2012/12/13 breno <br...@rio.pm.org>

2012/12/12 Aureliano Guedes <guedes_1...@hotmail.com>:
>
>> Ainda não tinha me aventurado nas novidades do Perl 5.16.
>>
>> o when eu entendi, mas o given não, alguem poderia me explicar o uso do
>> given??
>>
>> O break ja funciona no 5.16?? se sim, como???
>>
>
>given/when existe no Perl desde a versão 5.10, com direito a default,
>continue e break =)
>
>Pra saber como, dá uma olhada aqui ó:
>
>http://perldoc.perl.org/perlsyn.html#Switch-Statements
>
>tem tudo explicadinho, inclusive o fato de que given() é experimental
>- a forma recomendada de definir o tópico é com for().
>
>Boa diversão!
>
>[]s
>
>-b
>
>_______________________________________________
>Rio-pm mailing list
>Rio-pm@pm.org
>http://mail.pm.org/mailman/listinfo/rio-pm
>


-- 
André Garcia Carneiro
Software Engineer
(11)982907780

_______________________________________________
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm
_______________________________________________
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm

Reply via email to