O teste condicional GIVEN
Se você já estudou outras linguagens de programação, como C, C++ ou Java, por exemplo, deve estar ciente do comando switch, que funciona como um montão de IF e ELSE.Veja nosso tutorial sobre IF, ELSIF e ELSE em Perl.
Estude novamente o último exemplo, sobre testes condicionais aninhados, onde colocamos diversos IF e ELSE dentro de outros IF e ELSEs.
Basicamente, temos um valor ou expressão, em que queremos pegar seu resultado e comparar com uma série de possibilidades e rodar um determinado código específico para aquele resultado.
A sintaxe do given when é a seguinte:
given (expression){ when(value1) { #código caso #expression = value1 } when(value2) { #código caso #expression = value2 } when(value3) { #código caso #expression = value3 } default { #código caso #expression seja #qualquer outro valor } }
Como funciona GIVEN e WHEN em Perl
Vamos dar para o given alguma expressão, como um teste condicional que resulte em algum valor, booleano ou não, a informação é expression.Note que cada when tem um valor nele, dentro dos parêntesis de cada um, o Perl sai testando expression com todos esses valores dentro dos when.
Quando ele encontra um value que bate com expression, ou seja, são iguais, ele executa o código daquele when.
Se não encontrar nenhum when com valor que dá 'match' com o valor do given, ele executa o código do default.
Exemplos de uso de GIVEN e WHEN em Perl
O seguinte código pede um número ao usuário, de 1 até 7 e imprime na tela o nome, por extenso, do dia da semana. Caso digite errado, cai no default, que avisa o problema.#!/usr/bin/perl use experimental qw( switch ); print "Dia da semana: "; chomp($day=<STDIN>); given ($day){ when(1) {print "Domingo\n";} when(2) {print "Segunda-feira\n";} when(3) {print "Terça-feira\n";} when(4) {print "Quarta-feira\n";} when(5) {print "Quinta-feira\n";} when(6) {print "Sexta-feira\n";} when(7) {print "Sábado\n";} default {print "Dia inválido\n";} }Note algumas coisas.
Primeiro, isso é possível fazer com IF e ELSE, porém com eles fica mais longo e desorganizado.
Segundo, o comando GIVEN ainda é experimental, no Perl, portanto, por hora, evite usar sempre que puder.
Vamos criar, agora, um mini tradutor, onde o usuário vai digitar a cor em portuguesa e vamos exibir a tradução, em inglês:
#!/usr/bin/perl use experimental qw( switch ); print "Cor: "; chomp($color=<STDIN>); given ($color){ when("vermelho") {print "Red\n";} when("azul") {print "Blue\n";} when("amarelo") {print "Yellow\n";} when("verde") {print "Green\n";} default {print "Cor não faz parte do banco de dados\n";} }Foda esse Perl, não é?
Referências
https://www.perlmonks.org/?node_id=1078449https://www.perltutorial.org/perl-given/
Nenhum comentário:
Postar um comentário