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