16 septiembre 2007

Jugando con Perl (4)

(Volvemos tras un pequeño paréntesis vacacional...)

Hemos visto el manejo básico de las condiciones "if" y "while", pero estas órdenes dan más juego del que parece:

Para que el código fuente sea más legible, tenemos también órdenes parecidas pero que comprueban el caso contrario, como

unless (condición) {órdenes}

(las "órdenes" se ejecutaran en caso de que NO se cumpla la condición).

De igual modo, existe una orden similar a while, pero que repite mientras las condición no se cumple (o "hasta que la condición se cumpla"):

until (condición) {órdenes}

Además, estas 4 ordenes (if, while, unless, until) se pueden usar también como modificadores, al final de otra orden:

$y =5 if ($x <>
$y -- unless ($y==0);
print $y while($y <10);
...

pero hay más: también podemos encadenar varios "if" con "elsif":

if ($x <>
elsif ($x > 0) print "Es positivo";
else print "Es cero";

Si alguien viene de C y echa en falta "break" y "continue", también tiene equivalencias:

  • "last" hace lo que el "break": termina el bucle (for, while o el que se esté usando).
  • "next" equivale a "continue": termina la iteración actual del bucle y comienza la siguiente pasada.
  • También existe "redo", que da una nueva pasada sin volver a comprobar la condición.

Por cierto, la orden "goto" existe, pero como su uso es evitable casi siempre, no comento mas sobre ella... ;-)