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