Istruzione Perl switch

UN switchconsente di verificare l'uguaglianza di una variabile rispetto a un elenco di valori. Ogni valore è chiamato caso e per ciascuno di essi viene controllata la variabile attivataswitch case.

L'implementazione di uno switch case dipende da Switch modulo e Switchè stato implementato utilizzando Filter :: Util :: Call e Text :: Balanced e richiede l'installazione di entrambi questi moduli.

Sintassi

La sinossi di a switch L'istruzione nel linguaggio di programmazione Perl è la seguente:

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" }
}

Le seguenti regole si applicano a un file switch dichiarazione -

  • Il switch istruzione accetta un singolo argomento scalare di qualsiasi tipo, specificato tra parentesi.

  • Il valore è seguito da un blocco, che può contenere una o più istruzioni case seguite da un blocco di istruzioni Perl.

  • Un'istruzione case accetta un singolo argomento scalare e seleziona il tipo appropriato di corrispondenza tra l'argomento case e il valore switch corrente.

  • Se la corrispondenza ha esito positivo, viene eseguito il blocco obbligatorio associato all'istruzione case.

  • UN switch l'istruzione può avere un optional elsecaso, che deve comparire alla fine dell'interruttore. Il caso predefinito può essere utilizzato per eseguire un'attività quando nessuno dei casi è abbinato.

  • Se un case block esegue un untargeted next, il controllo viene immediatamente trasferito all'istruzione dopo l'istruzione case (cioè, di solito un altro caso), piuttosto che fuori dal blocco interruttore circostante.

  • Non tutti i casi devono contenere un file next. Se nonextappare, il flusso di controllo non cadrà nei casi successivi.

Diagramma di flusso

Esempio

#!/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 il codice sopra viene eseguito, produce il seguente risultato:

number 100

La caduta è di solito una cattiva idea in una dichiarazione di cambio. Tuttavia, ora considera un caso fallito, useremo ilnext per trasferire il controllo al caso corrispondente successivo, che in questo caso è un elenco -

#!/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 il codice sopra viene eseguito, produce il seguente risultato:

number 100
number in list