Sentencia switch de Perl

Perl 条件语句Sentencias condicionales en Perl

UnswitchLa sentencia permite comprobar si una variable es igual a varios valores. Cada valor se llama un case, y para cada unoswitch casese realiza la comprobación.

La ejecución de switch case se basa en elSwitchmódulo.SwitchEl módulo no está instalado por defecto.

Instalar el módulo Switch.pm

Instalar usando CPAN

Abra la ventana de comandos, ingrese el comando cpan y luego ingrese el comando install Switch:

# cpan
cpan[1]> install Switch           // 安装
cpan[2]> exit                     // 退出

Instalar en Ubuntu usando apt-get

sudo apt-get install libswitch-perl

Sintaxis

El formato de sintaxis es el siguiente:

Sintaxis

use Switch; switch(argument){ case 1 { print "Número 1" } case "a" { print "Cadena a" } case [1..10,42] { print "Número en la lista" } case (\@array) { print "Número en el array" } case /\w+/ { print "Patrón de coincidencia de expresión regular" } case qr/\w+/ { print "Patrón de coincidencia de expresión regular" } case (\%hash) { print "Hash" } case (\&sub) { print "Subproceso" } else { print "No coincide con las condiciones anteriores" } }

Las siguientes son las reglas de la sentencia switch:

  • switchEn los paréntesis de la sentencia se puede usar cualquier tipo de parámetro escalar.
  • En un switch puede haber cualquier número de sentencias case. Cada case va seguido de un valor a comparar y dos puntos.

  • El escalar después de la sentencia case se compara con el escalar de la sentencia switch para determinar si son iguales.

  • Cuando la variable probada es igual a la constante del case, las sentencias que siguen al case se ejecutan hasta encontrarbreakuna sentencia.

  • switchLa sentencia puede tener un opcionalelseque está al final y se ejecuta cuando ningún case coincide.

  • Cuando se coincide con un case, se ejecuta el bloque de código de la sentencia case y, después de la ejecución, se sale de la sentencia switch.

  • Cuando se coincide con un case, si necesitamos continuar ejecutando las siguientes sentencias case, debemos agregarnextuna sentencia.

Diagrama de flujo

Ejemplo

#!/usr/bin/perl use Switch; $var = 10; @array = (10, 20, 30); %hash = ('key1' => 10, 'key2' => 20); switch($var){ case 10 { print "Número 10\n" } case "a" { print "Cadena a" } case [1..10,42] { print "Número en la lista" } case (\@array) { print "Número en el array" } case (\%hash) { print "En el hash" } else { print "Ninguna condición coincide" } }

Al ejecutar el programa anterior, el resultado es:

数字 10

A continuación veamos el usonextdel ejemplo:

Ejemplo

#!/usr/bin/perl use Switch; $var = 10; @array = (10, 20, 30); %hash = ('key1' => 10, 'key2' => 20); switch($var){ case 10 { print "Número 10\n"; next; } # Continuar ejecutando después de la coincidencia case "a" { print "string a" } case [1..10,42] { print "Número en la lista" } case (\@array) { print "Número en el array" } case (\%hash) { print "En el hash" } else { print "Ninguna condición coincide" } }

Al ejecutar el programa anterior, el resultado es:

数字 10
数字在列表中

Perl 条件语句Sentencias condicionales en Perl

Otras extensiones