Le cycle de for en Perl

Dans le langage de programmation Perl il y a plusieurs façons de créer un cycle. Un des moyens d'utiliser le mot-clé for.

Voici un exemple:

▶ Run
#!/usr/bin/perl

for (my $i=0; $i < 3; $i++) {
    print "$i\n";
}

Le programme affichera les trois lignes avec des chiffres:

0
1
2

Comment fonctionne le cycle for

Le cycle de for dans un langage de programmation Perl est très rappelle le cycle de for dans la langue c langage de programmation.

Après for entre parenthèses va 3 extrait de code:

  • la valeur initiale
  • vérification
  • le changement

Tout d'abord effectué le premier extrait de code. Ensuite vérifie sur la vérité ou le mensonge dans le deuxième fragment de code. Si le test renvoie la vérité, de ce fait le corps de la boucle, si le test renvoie false, alors la boucle se termine. Si vous avez le corps de la boucle, après l'exécution de code dans le corps de la boucle est exécutée code dans le troisième extrait, puis de nouveau un test et tout va déjà décrit l'algorithme.

Il est possible de la situation le corps de la boucle n'est pas exécutée pas une seule fois. Il arrive si le premier test immédiatement retourne false.

L'absence de valeurs

Une caractéristique intéressante du cycle réside dans le fait que n'importe quel morceau de code dans la description du cycle de peut-être manquant.

Voici un exemple de boucle dont la description n'est pas définie à une valeur initiale:

▶ Run
#!/usr/bin/perl

my $i = 0;

for (; $i < 3; $i++) {
    print "$i\n";
}

Dans ce cas, si dans la description du cycle de for manque de vérification, cela crée une boucle infinie. Voici un exemple de boucle for qui ne figurent vérifier, mais pour tout ce cycle est terminé la vérification est transférée dans le corps de la boucle et est utilisé last.

▶ Run
#!/usr/bin/perl

for (my $i=0;; $i++) {
    last unless $i < 3;
    print "$i\n";
}

Dans la description du cycle de la troisième fragment peut aussi manquer:

▶ Run
#!/usr/bin/perl

for (my $i=0; $i < 3;) {
    print "$i\n";
    $i++;
}

Si dans le cycle de supprimer tous les fragments, cela crée une boucle infinie:

#!/usr/bin/perl

for (;;) {
    print "infinity\n";
}

La visibilité de la variable

Dans ce cas, si la variable est définie dans la description du cycle, à l'extérieur du corps du cycle de cette variable n'est pas disponible. Dans ce cas, si dans le code de use strict;, ce traitement génère une erreur.

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

for (my $i=0; $i < 3; $i++) {
    print "$i\n";
}

print $i;
Global symbol "$i" requires explicit package name (did you forget to declare "my $i"?) at script.pl line 10.
Execution of script.pl aborted due to compilation errors.

Si il est nécessaire d'utiliser la variable compteur à l'extérieur du corps de boucle, il faut le définir en dehors de la la description du cycle:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $i = 0;

for (; $i < 3; $i++) {
    print "$i\n";
}

print $i;

next et last

En Perl, il ya des mots-clés avec lesquels vous pouvez influer sur l'exécution de la boucle.

Le mot-clé next arrête l'exécution de l'itération courante:

▶ Run
#!/usr/bin/perl

for (my $i=0; $i < 3; $i++) {
    next if $i == 0;
    print "$i\n";
}

Et avec l'aide de last , vous pouvez à tout moment compléter la mise en œuvre du cycle:

▶ Run
#!/usr/bin/perl

for (my $i=0; $i < 3; $i++) {
    last if $i == 1;
    print "$i\n";
}

Thèmes connexes

Autres articles