Aldeia Numaboa
Um portal diferente em Português do Brasil
Informática da Aldeia

Tutoriais
Home Informática Tutoriais e Programação Perl e CGI Linguagem Perl - Expressões Condicionais

Na Aldeia

Há 86 visitantes online

3304 registros
0 hoje
9 nesta semana
41 neste mês

Boas vindas: Xico

Estatística

Artigos: 1063
Leituras: 6036427
Arquivados: 21
Downloads: 533
Baixados: 172236
Glossário: 1208
Bibliografia: 25
Links: 90

Visitas de onde

Top 5:
Brasil flag 73%Brasil (47534)
Portugal flag 5%Portugal (3069)
EUA flag 3%EUA (2132)
Rússia flag 0%Rússia (259)
Holanda flag 0%Holanda (239)
65126 visitas de 100 países

Hoje:134
Ontem:2587
No mês:39311
Mês passado:25815
Total:65126
Recorde:3037
No dia:04.03.10
Leituras hoje:18980
Leituras Total:280532
Bots hoje:60
Dados desde:16.02.2010

Login



Kanji da hora




Faça contato






Sáb

22

Nov

2008


21:22

Linguagem Perl - Expressões Condicionais PDF Imprimir Indique esta página
(0 votos, média 0 de 5)
Escrito por vovó Vicki   


Neste tutorial serão tratadas as expressões condicionais if, unless, else e elsif. Também será mostrada uma versão simplificada de if/else oferecida pela linguagem Perl.

Expressões condicionais da Perl

Veja no exemplo abaixo a aplicação de cada uma das expressões condicionais desta linguagem de programação:

#!/usr/bin/perl
@Senhas = ("Curioso","Intrometido","Invasor"); # Lista de senhas
 
# Script 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 <a class="mosinfopop" style="cursor:help;border-bottom:1px dotted #000000;" href="javascript:void(0)" onmouseover="return overlib('<p>HyperText Markup Language, que significa Linguagem de Marcação de Hipertexto. É usada para criar páginas web.</p>&amp;nbsp;<br />', CAPTION, 'HTML',BELOW,RIGHT, WIDTH, 300, FGCOLOR, '#CCCCFF', BGCOLOR, '#333399', TEXTCOLOR, '#000000', CAPCOLOR, '#FFFFFF', OFFSETX, 10, OFFSETY, 10);" onmouseout="return nd();" > HTML</a> 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"; # <a class="mosinfopop" style="cursor:help;border-bottom:1px dotted #000000;" href="javascript:void(0)" onmouseover="return overlib('<p>O <b>H</b>yper<b>T</b>ext <b>T</b>ransfer <b>P</b>rotocol (Protocolo de Transferência de Hipertexto - HTTP) é o protocolo de comunicação utilizado para a troca de dados entre um navegador e um servidor web. É o protocolo de comunicação que você aciona quando digita um endereço no seu navegador: http://www...</p>&amp;nbsp;<br />', CAPTION, 'HTTP',BELOW,RIGHT, WIDTH, 300, FGCOLOR, '#CCCCFF', BGCOLOR, '#333399', TEXTCOLOR, '#000000', CAPCOLOR, '#FFFFFF', OFFSETX, 10, OFFSETY, 10);" onmouseout="return nd();" > HTTP</a>-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 usuário para uma URL secreta
   }
   else
   {
      print "<b>Desculpe, sua senha está incorreta.
         Seu acesso foi negado !</b>\n";
   }
   print "\n";
   exit(0);
}

Com if inicia-se 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, são necessários 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 se) 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.

Info Observação: 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. Veja o 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'} =~ /98/ - 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.

Última atualização ( Sáb, 22.11.2008 21:48 )
 

Topo

Topo

Exceto onde especificamente citado, todo material deste site está sob Licença Creative Commons