La secuencia de ejecución de un programa se puede modificar con instrucciones específicas de control de flujo. Los bloques de código es necesario que siempre se encierren entre llaves {}, aunque sólo se componga de una sentencia.
Las estructuras básicas de control de Perl son:
IF:
if (condición) {SENTENCIAS}
IF...ELSE
if (condición) {SENTENCIAS} else {SENTENCIAS}
IF...ELSEIF...ELSE
Se utiliza para anidar sentencias IF.
If (condición) {SENTENCIAS} elseif (condición) {SENTENCIAS} else {SENTENCIAS}
UNLESS
Es un IF negado. Se ejecuta el bloque de código si la condición es falsa
unless (condición) {SENTENCIAS}
WHILE
While (condición) {SENTENCIAS}
ETIQUETA While (condición) {SENTENCIAS}
UNTIL
Ejecuta un bloque hasta que se cumpla la condición.
{SENTENCIAS} until (condición)
FOR
Igual que el bucle for de C
FOR (EXPRESION; EXPRESION; EXPRESION) {SENTENCIAS}
ETIQUETA FOR (EXPRESION; EXPRESION; EXPRESION) {SENTENCIAS}
FOREACH
Ejecuta un bloque de código para cada variable de una lista
foreach $variable (lista) {SENTENCIAS}
ETIQUETA es un nombre seguido de :, y se utiliza para identificar un bloque de código. Para modificar la secuencia de ejecución de un programa se puede utilizar:
next ETIQUETA: interrumpe la secuencia de ejecución del bloque identificado por ETIQUETA, iniciando una nueva iteración sobre él Si ésta no se especifica, afecta al ciclo más interno de ejecución.
last ETIQUETA: interrumpe la secuencia de ejecución del bloque y pasa el control a la siguiente instrucción después del bloque. Trabaja igual que el operador break de C.
redo: reinicia la ejecución del bloque sin evaluar la condición de salida o permanencia.