O teste condicional UNLESS em Perl

Nesse tutorial de nosso Curso de Perl, vamos aprender o que é, para que serve e como usar o teste condicional unless em Perl.

unless em Perl

Vimos no tutorial sobre o teste condicional IF que ele executa determinado bloco de código, caso uma expressão ou condição seja verdadeira.

Existe uma estrutura de seleção contrária ao IF, que é o UNLESS, ou seja, ela vai executar determinados comandos se o teste condicional for FALSO.

Ou seja, usamos ele assim:
unless (teste_condicional){
   # código caso o teste
   # seja falso
}
Unless, em inglês, significa: a menos que.

Ou seja, veja a lógica dessa estrutura: a menos que [teste] seja verdadeiro, fazer...
Agora vamos ver alguns exemplos.

Como usar unless em Perl

Crie um script em Perl que solicite a idade ao usuário, para entrar numa festa, e que só permita a entrada se ele tiver 18 anos ou mais.

O código do script é:
#!/usr/bin/perl

print "Idade: ";
chomp($age=<STDIN>);

unless($age>=18){
        print "Você precisa ter 18 anos, pelo menos\n";
}
Agora, a lógica deve funcionar bem em sua cabeça, para você entender o conceito e ser um bom programador. O que esse código significa é:
print essa mensagem, a menos que a condição seja verdadeira

Ou seja, se a condição for falsa, é pra rodar o código do unless.
É pra rodar, a menos que seja verdade, ou seja, se for verdade não roda, só roda se for falso, ao contrário do IF que só roda se for verdade.

Um pouco confuso no começo, mas com calma você pega.

unless e else em Perl

E, assim como no nosso amado IF e ELSE, também existe o UNLESS E ELSE.
Hora, se o teste for verdadeiro cai no IF e se for falso cai no ELSE, no caso do unless é o contrário: se o teste for falso, cai no UNLESS e se for verdadeiro, cai no ELSE.

Vamos deixar o script anterior mais completo:
#!/usr/bin/perl

print "Idade: ";
chomp($age=<STDIN>);

unless($age>=18){
        print "Você precisa ter 18 anos, pelo menos\n";
}else{
        print "Pode entrar!\n";
}
Prontinho, agora se tiver 18 anos ou mais, avisa que pode entrar.
Se tiver menos que 18, avisa que não pode entrar.

Exemplo de uso de unless

Vamos fazer agora o exemplo do script que pede a senha para o usuário, se ela for diferente de 'rush2112', avisa que o hacker vai ser preso. Se for verdade, avise que está entrando no sistema.

Veja como fica o código:
#!/usr/bin/perl

print "Digite a senha: ";
chomp($password=<STDIN>);

unless($password eq 'rush2112'){
        print "Senha errada! Pegamos você, hacker...\n";
}else{
        print "Senha correta, entrando no sistema...\n";
}
Note que usamos o operador de comparação de igualdade, eq, de strings.
Se for falso, ou seja, se a senha for diferente de 'rush2112', dizemos que pegamos o hacker.

Poderíamos fazer ao contrário, usando o operador ne (not equal), de desigualdade, veja:
#!/usr/bin/perl

print "Digite a senha: ";
chomp($password=<STDIN>);

unless($password ne 'rush2112'){
        print "Senha correta, entrando no sistema...\n";
}else{
        print "Senha errada! Pegamos você, hacker...\n";
}
Ou seja, se não for desigual, é porque é igual a senha está correta.

É o contrário do anterior, e o UNLESS é sempre o contrário do IF.
Veja que não existe certo nem errado, melhor nem pior, código é como impressão digital, cada um tem o seu estilo próprio, veja o que mais faz sentido pra você.

Eu, particularmente, ainda prefiro usar o IF.
Você pode, inclusive, usar UNLESS com ELSIF, veja:
https://beginnersbook.com/2017/02/unless-elsif-else-statement-in-perl/

Nenhum comentário:

Veja também: