Boucles et instructions conditionnelles
Instructions conditionnelles à une ligne
if ($var = =0) {
print ("Voici
zéro.\n");
}
peut être remplacé par
print ("Voici zéro.\n") if ($var = =0);
On aura de même
print ("Voici zéro.\n") unless ($var =
=0);
print ("Pas encore zéro.\n") while ($var = =0);
print ("Pas encore zéro.\n") until ($var = =0);
Boucler sur une liste : l'instruction foreach
foreach $word (@words) {
if($word eq "toto") {
print ("mot toto trouvé\n");
}
}
Si @words est une liste de mots, le
programme précédent affiche toto dès
qu'il le trouve dans la liste. $word est ici
une variable locale à la boucle foreach.
Boucle do
C'est la seule boucle qui permette d'effectuer la série d'instructions au moins une fois, puisque l'expression conditionnelle est évaluée après la réalisation de ces instructions.
Last, next et redo
- L'instruction last permet de
sortir d'une boucle même si l'expression conditionnelle est
vraie. Exemple :
while (1) {
$line =
<STDIN>;
if ($line eq "") {
last ;
}
...
}
Alors que la condition (1) est toujours vraie, ce qui devrait mener à une boucle infinie, on sort de la boucle dès que l'on atteint la fin du fichier d'entrée standard.
- L'instruction next permet de
shunter une itération et de passer à la suivante.
- L'instruction redo permet de
recommencer une itération de la boucle (Attention : on ne
peut utiliser redo à
l'intérieur d'une boucle do).
Last, next et redo ne permettent de quitter que la boucle en cours. Dans le cas de boucles imbriquées, et si l'on souhaite sortir de l'ensemble des boucles, on peut utiliser des étiquettes. Exemple :
PREMIERE: while (...) {
...;
while (...) {
...;
last PREMIERE;
}
}
Ces étiquettes peuvent également
être affectées à des lignes
quelconques, et utilisées par goto.