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
.