Bucles en Perl

A veces, puede que necesitemos ejecutar el mismo bloque de código varias veces. Normalmente, las sentencias se ejecutan en orden: la primera sentencia de una función se ejecuta primero, luego la segunda, y así sucesivamente.

Los lenguajes de programación proporcionan varias estructuras de control para rutas de ejecución más complejas.

Las sentencias de bucle nos permiten ejecutar una sentencia o un grupo de sentencias varias veces. A continuación se muestra el diagrama de flujo de las sentencias de bucle en la mayoría de los lenguajes de programación:

循环结构

Nota: el número 0, la cadena '0', "", la lista vacía () y undef son falsefalse, los demás valores son truetrue. Si se usa la palabra clave 'not' antes de true!onotentonces devuelve false.

El lenguaje Perl proporciona los siguientes tipos de bucles:

Tipo de bucleDescripción

Bucle while

Cuando la condición dada es true, repite la ejecución de una sentencia o grupo de sentencias. La condición se prueba antes de ejecutar el cuerpo del bucle.

Bucle until

Repite la ejecución de una sentencia o grupo de sentencias hasta que la condición dada sea true. La condición se prueba antes de ejecutar el cuerpo del bucle.

Bucle for

Ejecuta una secuencia de sentencias varias veces y simplifica el código que gestiona las variables del bucle.

Bucle foreach

El bucle foreach se utiliza para iterar sobre los valores de una lista o una variable de colección.

Bucle do...while

Es similar a la sentencia while, excepto que prueba la condición al final del cuerpo del bucle.

Bucles anidados

Puede usar uno o más bucles dentro de un bucle while, for o do...while.

Sentencias de control de bucles

Las sentencias de control de bucles cambian el orden de ejecución del código; mediante ellas se puede realizar saltos en el código.

Perl proporciona las siguientes sentencias de control de bucles:

Sentencia de controlDescripción

Sentencia next

Detiene la ejecución de las sentencias desde la que sigue a la sentencia next hasta la marca de fin del cuerpo del bucle, pasa a ejecutar el bloque continue y luego regresa al inicio del cuerpo del bucle para comenzar la siguiente iteración.

Sentencia last

Sale del bloque del bucle, terminando así el bucle.

Sentencia continue

El bloque de la sentencia continue normalmente se ejecuta antes de que la condición se evalúe nuevamente.

Sentencia redo

La sentencia redo va directamente a la primera línea del cuerpo del bucle para repetir la iteración actual; las sentencias posteriores a redo no se ejecutan, y el bloque continue tampoco se ejecuta.

Sentencia goto

Perl tiene tres formas de goto: got LABLE, goto EXPR y goto &NAME.

Bucle infinito

Si la condición nunca es false, el bucle se convertirá en un bucle infinito.

El bucle for, en el sentido tradicional, puede utilizarse para implementar un bucle infinito.

Dado que ninguno de los tres componentes del bucle es obligatorio, puede dejar vacías algunas expresiones para formar un bucle infinito.

Ejemplos

#!/usr/bin/perl for( ; ; ) { printf "El bucle se ejecutará infinitamente.\n"; }

Puede presionar la tecla Ctrl + C para terminar el bucle.

Cuando la expresión de condición no existe, se asume que es true. También puede establecer un valor inicial y una expresión de incremento, pero en general, los programadores de Perl prefieren usar la estructura for(;;) para representar un bucle infinito.

Otras extensiones