3630 registros
0 hoje
14 nesta semana
4 neste mês|
Sáb 22 Nov 2008 21:22 |
|
|
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 PerlVeja 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>&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>&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.
Expressão Condicional simplificadaExiste 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 ) |