Initiation au Perl
6. Les boucles et conditions
6.1 Condition
6.1.2 Conditions imbriquées
if ( <condition> ) { <action(s)> }
elsif ( <condition> ) { <action(s)> }
elsif ( <condition> ) { <action(s)> }
....
else { <action(s)> }
Exemple :
if ($jours eq "Lundi") {
print "Début de semaine\n";
} elsif ( ($jours eq "Samedi") || ($jours eq "Dimanche") ) {
print "C'est le week-end\n";
} else {
print "Courant de semaine\n";
}
6.2 Boucle for
Le Perl dispose de la structure for (pour), qui est une copie de celle du C.
for (<initialisation>; <test>; <incrémentation>) { <action(s)> }
Exemple :
for ($i = 0; $i < 10; $i++) {
# commence à $i = 0
# Continue tant que $i < 10
# Incrémente $i avant de répéter.
print $i."\n";
}
6.3 Boucle foreach
La structure foreach (pour chaque) permet de parcourir tous les éléments d'un
tableau ou d'une structure listée quelconque (comme un fichier). Elle se présente de la façon suivant :
foreach <élément> ( <liste ou tableau> ) { <action(s)> }
Exemple :
foreach $jour (@jours) {
print $jour."\n"; # affiche chaque élément contenu dans @jours.
}
6.4 Boucle while
Le Perl dispose de la structure while (tant que), qui est une copie de celle du C.
while ( <condition> ) { <action(s)> }
Exemple :
print "Mot de passe? "; # Demande un mot de passe
$in = chop(<STDIN>); # Lit le mot entré + Enlève le retour chariot de la fin de la ligne
while ($in ne "Fred") # Tant que le mot n'est pas bon
{
print "Erreur. Essaye encore une fois : ";
$a = chop(<STDIN>); # Relit le mot entré + Enlève le retour chariot
}
6.5 Boucle do
La boucle do peut être utilisée de 2 façons différentes suivant que l'on désire
qu'elle s'exécute jusqu'à ou tant que une condition soit valide.
do { <action(s)> } while_ou_until ( <condition> )
while_ou_until est soit le mot-clé while, soit until. Si vous utilisez while
les actions sont exécutées tant que la condition est vrai. Si vous utilisez until
les actions sont exécutées jusqu'à ce que la condition soit vrai.
Exemple :
do {
$line = <STDIN>;
} while ($line ne "");
# Lit l'entrée standard tant que $line n'est pas vide.
do {
$line = <STDIN>;
} until ($line eq "");
# Lit l'entrée standard jusqu'à ce que $line soit vide.
6.6 Contrôle du flux dans les boucles
L'exécution normale d'une boucle peut être modifiée par une intervention externe.
Perl offre des possibilités intéressantes à ce niveau. Voici les principales commandes disponibles :
- last
- Envoie l'exécution à la première instruction après la boucle.
En d'autres termes, on force ce passage comme dernier passage.
- next
- Force un nouveau passage immédiat de la boucle.
Aussi, même si le passage courant n'est pas complètement terminé, l'exécution est renvoyée au
début de la boucle.
- redo
- Force à recommencer une itération de la boucle.
- goto LABEL
- Force l'envoie à une étiquette spécifiée (LABEL). Cette instruction existe, mais il
est déconseillé de l'utilisée si l'on veut programmer proprement...
De plus lorsque plusieurs boucles sont imbriquées, il est possible de définir
des étiquettes pour indiquer à quel boucle appartient last, next ou redo...
Exemple:
LABEL:
# Définition de l'étiquettes
while ($line1 = <FILE1>) {
while ($line2 = <FILE2>) {
if (line2 eq "fin") {
last LABEL;
}
}
}
|