Programación en Perl/Estructuras de control

De Wikilibros, la colección de libros de texto de contenido libre.

[editar] Estructuras de control

Perl tiene varias clases de estructuras de control.

Tiene estructuras de control orientado al bloque, similar a los de los lenguajes de programación C y Java. Las condiciones están rodeadas por paréntesis y los bloques subordinados por llaves:

etiqueta while ( condición ) { ... }
etiqueta while ( condición ) { ... } continue { ... }
etiqueta for ( expresión inicial ; expresión condicional ; expresión incremental ) { ... }
etiqueta foreach var ( lista ) { ... }
etiqueta foreach var ( lista ) { ... } continue { ... }
if ( condición ) { ... }
if ( condición ) { ... } else { ... } 
if ( condición ) { ... } elsif ( condición ) { ... } else { ... } 

Cuando se controla a una sola declaración, los modificadores de declaración proporcionan una sintaxis más ligera:

declaración if      condición ;
declaración unless  condición ;
declaración while   condición ;
declaración until   condición ;
declaración foreach lista ;

Los operadores lógicos cortocircuito son normalmente usados para controlar el flujo del programa a nivel de expresión:

expr and expr
expr or  expr

Las palabras clave de control de flujo next, last, return y redo son expresiones, por lo que pueden ser usadas con los operadores cortocircuito.

Perl también tiene dos construcciones implícitas para bucles:

resultados = grep { ... } lista
resultados = map  { ... } lista

grep devuelve todos los elementos de lista en que el bloque subordinado evalúa a verdadero. map evalúa el bloque subordinado por cada elemento de lista y devuelve una lista de los valores resultantes. Estas construcciones permiten un estilo simple de programación funcional.

No hay declaración switch (salto multi-camino) en Perl 5. La documentación Perl describe media docena de formas de conseguir el mismo efecto usando otras estructuras de control. Existe sin embargo un módulo Switch, que proporciona la funcionalidad modelada para el próximo Perl 6.

Perl incluye una declaración goto etiqueta, pero es usada raramente. Las situaciones donde en otros lenguajes se utiliza goto no ocurren tan a menudo en Perl debido a sus amplias opciones de control de flujo.

Existe también una declaración goto &sub que realiza una llamada 'final'. Termina la subrutina actual e inmediatamente llama a la sub especificada. Esto se usa en situaciones donde una nueva subrutina puede realizar una gestión de la pila más eficiente que el propio Perl (porque típicamente no se requiere ningún cambio en la pila actual), y en una recursión muy profunda este tipo de llamadas puede tener un sustancial impacto positivo en el funcionamiento porque evita la sobrecarga de la gestión contexto/pila en el momento de retornar.


Índice - Subrutinas o Subprogramas >>

Herramientas personales