Tutor NumaBoaEXPRESSÕES CONDICIONAIS
Tutorial Linguagem Perl - 5
Silício NumaBoa

Roteiro do Módulo:
Expressões Condicionais
Expressões de Condição if/unless/else/elsif
Expressão Condicional simplificada


Expressões de Condição if / unless / else / elsif
É possível condicionar a execução de diretivas através de expressões condicionais. Exemplo:
#!/usr/bin/perl
@Senhas = ("Curioso","Intrometido","Invasor"); # Lista de senhas

# Script CGI simples para exigir senha #
# Na primeira condição, unless é testado se a entrada padrão contém a #
#   palavra 'segredo'. Se não for o caso, é gerado um HTML com um     #
#   pequeno formulário para a entrada da senha. Ao se enviar o        #
#   formulário, este script é novamente acionado.                     #
# Como o nome do campo para a senha agora é 'segredo',  o script      #
#   entra no ramo else. Neste ramo, a senha digitada é procurada na   #
#   lista de senhas.                                                  #

read(STDIN, $Input, $ENV{'CONTENT_LENGTH'}); # Leitura da entrada padrão
unless($Input =~ /segredo/) # Se não contiver 'segredo'...
{
   print "Content-type: text/html\n\n"; # HTTP-Header para o HTML
   print "<html><head><title>SENHA</title></head>\n"; # Arquivo HTML
   print "<body bgcolor=#COCOCO><h1>Senha</h1>\n";
   print "<form action=\"\\cgi-bin/test.pl\" method=post> \n";
   print "<input type=password name=\"segredo\" maxlength=15 size=15> \n";
   print "<input type=submit value=\"Enviar\" name="submit"> \n";
   print "<input type=reset value=\"Cancelar\" name="reset"> \n";
   print "</form></body></html>\n";
   exit(0);
}
else # se tiver 'segredo'...
{
   print "Content-type: text/html\n\n"; # HTTP-Header para o HTML
   print "<html><head><title>SENHA</title></head>\n"; # Arquivo HTML
   print " <h1>Senha</h1>\n";
   ($nome, $valor) = split(/=/, $Input);
   for(@Senhas) # Rastrear lista de senhas
   {
      if($valor eq $_) # Se o valor fornecido for igual à senha
      {
         $Sucesso = "sim";
         last; # Terminar o laço for
      }
      else # Se não encontrar a senha na lista
      {
          $Sucesso = "nao";
      }
   }
   if($Sucesso eq "sim")
   {
      print "<b>Acesso Permitido!</b>\n"; # Aqui, por exemplo, podemos
         enviar o freguês para uma URL secreta
   }
   else
   {
      print "<b>Desculpe, sua senha está incorreta.
         Seu acesso foi negado !</b>\n";
   }
   print "\n";
   exit(0);
}

Com if pode-se iniciar uma condição se-então (if = se). Logo após o if, dita-se a condição entre parênteses. Para formular a condição, necessita-se de operadores relacionais para números ou strings, geralmente também variáveis ou expressões regulares.

Uma outra possibilidade para formular uma condição se-então é através do uso de unless (unless = quando não). As regras são as mesmas do if. A diferença reside no fato de que com unless não é checado se a condição foi atendida, mas sim, se a condição não foi atendida para executar a porção do código dependente da referida condição.

Quando se quer criar um bloco de condições, utiliza-se uma ou várias elsif (elsif = ou quando) logo após a primeira condição if/unless (atenção: o correto é elsif e não elseif !).

Com else (else = senão) define-se o ramo de código que deve ser executado caso a condição if, unless ou elsif não seja atendida.

Observações: Tudo que estiver num ramo criado por condições if, unless, elsif ou else, precisa estar entre chaves, mesmo que se trate apenas de uma única diretiva.



Expressão Condicional simplificada

Existe uma sintaxe especial para expressões condicionais simples que pode ser utilizada como alternativa às expressões if/else. Exemplo:

#!/usr/bin/perl

$Resultado =
   $ENV{'HTTP_USER_AGENT'} =~ /98/ ? "Win 98/NT" : "não é Win 98/NT";
print "Content-type: text/html\n\n";
print "<html><head><title>Usuário</title><head>\n";
print "<body>\n";
print " <h1>Você possui ", $Resultado, "!</h1>\n";
print "</body></html>\n";
exit(0);

Uma avaliação se-então simples é iniciada por uma condição - no exemplo, $ENV{'HTTP_USER_AGENT'} =~ /95/ - seguida por um ponto de interrogação ?. Após o ponto de interrogação, segue um valor, que será o atual se a condição for satisfeita. Logo a seguir são colocados dois pontos : e o valor que será assumido caso a condição não seja atendida. Como se tratam de valores que só poderão ser processados se estiverem armazenados, geralmente atribui-se o resultado de uma avaliação se-então a uma variável qualquer - no exemplo, a escalar $Resultado.

Para formular uma condição é necessário usar-se operadores relacionais (de comparação).


Todos os scripts CGI deste site são "made in Aldeia". As linguagens utilizadas são principalmente PHP e alguma coisa em Perl. Faça contato: tire dúvidas, solicite matérias, critique e contribua.




@ Linguagem Perl | Generalidades | Fundamentos | Variáveis | Predefinidas | Condicionais | Loops/Saltos | Operadores | Regulares | Sinais | Funções | Arquivos | Strings | Números | CGI | Scripts |

| AAAA | Página Inicial | Mapa do Site | Novidades | Busca | Indique esta página | Mestre da Teia | Voltar |
| Localizador || @ Info NumaBoa > Tutoriais > Linguagem Perl - Expressões condicionais
Créditos: vovó Vicki

webdesign sobMedida by vickiSoft - /informatica/tutor/linguagens/perlExprCond.php (23.08.00) versão 1.1 de 26.07.03
Licença Creative Commons 1998-2006 Aldeia NumaBoa
Exceto onde especificamente declarado, todo material deste site é disponibilizado de acordo com a Licença Creative Commons.