FTLS.org 
Francais     English
 
 
Accueil
 
 Linux
Introduction
Liens
 
 Initiation
Internet
HTML
CGI
Perl
 
 Archives
Java
Perl Tools
Scripts CGI
Scripts PHP
 
 Calculatrices
HP 48
TI 92
 
 Gratuit du Net
A Gratuit
Comparatifs
Se divertir
 
 Aide Webmasters
Trucs & Astuces
JavaScript
 
 Site
Partenaires
Contact
 
 Powered by
linux
 

Initiation


Initiation au Perl



6. Les boucles et conditions

    6.1 Condition

      6.1.1 Condition simple

      if ( <condition> ) { <action(s)> }

      if ( <condition> ) { <action(s)> }
      else { <action(s)> }

      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;
            }
        }
    }



 
© Copyright 2000 FTLS (Tyndiuk Frédéric). All rights reserved.
Last Update 08/03/2000 - Send all comments to webmaster@ftls.org