Instrução de switch Perl

UMA switchinstrução permite que uma variável seja testada quanto à igualdade em relação a uma lista de valores. Cada valor é chamado de caso, e a variável que está sendo ligada é verificada para cadaswitch case.

Uma implementação de switch case depende de Switch módulo e SwitchO módulo foi implementado usando Filter :: Util :: Call e Text :: Balanced e requer que ambos os módulos sejam instalados.

Sintaxe

A sinopse de um switch declaração na linguagem de programação Perl é a seguinte -

use Switch;

switch(argument) {
   case 1            { print "number 1" }
   case "a"          { print "string a" }
   case [1..10,42]   { print "number in list" }
   case (\@array)    { print "number in list" }
   case /\w+/        { print "pattern" }
   case qr/\w+/      { print "pattern" }
   case (\%hash)     { print "entry in hash" }
   case (\&sub)      { print "arg to subroutine" }
   else              { print "previous case not true" }
}

As seguintes regras se aplicam a um switch declaração -

  • o switch instrução leva um único argumento escalar de qualquer tipo, especificado entre parênteses.

  • O valor é seguido por um bloco, que pode conter uma ou mais instruções case seguidas por um bloco de instruções Perl.

  • Uma instrução case usa um único argumento escalar e seleciona o tipo apropriado de correspondência entre o argumento case e o valor de switch atual.

  • Se a correspondência for bem-sucedida, o bloco obrigatório associado à instrução case é executado.

  • UMA switch declaração pode ter um opcional elsecaso, que deve aparecer no final do switch. O caso padrão pode ser usado para executar uma tarefa quando nenhum dos casos é correspondido.

  • Se um bloco de caso executa um não direcionado next, o controle é imediatamente transferido para a instrução após a instrução case (ou seja, geralmente outro case), em vez de sair do bloco de switch circundante.

  • Nem todo caso precisa conter um next. Se nãonextaparecer, o fluxo de controle não cairá nos casos subsequentes.

Diagrama de fluxo

Exemplo

#!/usr/local/bin/perl

use Switch;

$var = 10;
@array = (10, 20, 30);
%hash = ('key1' => 10, 'key2' => 20);

switch($var) {
   case 10           { print "number 100\n" }
   case "a"          { print "string a" }
   case [1..10,42]   { print "number in list" }
   case (\@array)    { print "number in list" }
   case (\%hash)     { print "entry in hash" }
   else              { print "previous case not true" }
}

Quando o código acima é executado, ele produz o seguinte resultado -

number 100

Fall-embora geralmente é uma má ideia em uma instrução switch. No entanto, agora considere um caso de falha, usaremos onext para transferir o controle para o próximo caso correspondente, que é uma lista neste caso -

#!/usr/local/bin/perl

use Switch;

$var = 10;
@array = (10, 20, 30);
%hash = ('key1' => 10, 'key2' => 20);

switch($var) {
   case 10           { print "number 100\n"; next; }
   case "a"          { print "string a" }
   case [1..10,42]   { print "number in list" }
   case (\@array)    { print "number in list" }
   case (\%hash)     { print "entry in hash" }
   else              { print "previous case not true" }
}

Quando o código acima é executado, ele produz o seguinte resultado -

number 100
number in list