Ciclo for in Perl

Nel linguaggio di programmazione Perl ci sono diversi modi per creare un ciclo. Uno dei modi è quello di utilizzare la parola chiave for.

Ecco un esempio:

▶ Run
#!/usr/bin/perl

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

Il programma visualizzerà tre righe con i numeri:

0
1
2

Come funziona il ciclo for

Ciclo for nel linguaggio di programmazione Perl ricorda molto il ciclo for in lingua programmazione Xi.

Dopo for tra parentesi va 3 frammento di codice:

  • il valore iniziale
  • verifica
  • il cambiamento

Innanzitutto il primo frammento di codice. Poi verifica per la verità o una bugia nel secondo frammento di codice. Se il test restituisce la verità, allora viene eseguito il corpo del ciclo, se la verifica restituisce false, poi il ciclo termina. Se è stato eseguito il corpo del ciclo, dopo l'esecuzione del codice nel corpo del ciclo viene eseguito il codice nel terzo frammento, poi di nuovo viene eseguito il controllo e tutto va avanti già descritto l'algoritmo.

E ' possibile la situazione il corpo del ciclo non viene eseguito nemmeno una volta. Così accadrà se la prima verifica una volta restituirà false.

La mancanza di valori

Una caratteristica interessante del ciclo consiste nel fatto che qualsiasi frammento di codice nella descrizione del ciclo può essere assente.

Ecco un esempio di ciclo nella descrizione di cui non è installato il valore iniziale:

▶ Run
#!/usr/bin/perl

my $i = 0;

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

Nel caso in cui nella descrizione del ciclo for manca il controllo, questo crea un ciclo infinito. Ecco un esempio di un ciclo di for in cui non si verifica, ma per tutto questo ciclo si è concluso il controllo è trasferito nel corpo del ciclo e viene utilizzato last.

▶ Run
#!/usr/bin/perl

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

Nella descrizione del ciclo il terzo frammento può mancare:

▶ Run
#!/usr/bin/perl

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

Se nel ciclo di omettere tutti i passaggi, allora si creerà un ciclo infinito:

#!/usr/bin/perl

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

La visibilità di una variabile

Nel caso in cui la variabile è definita nella descrizione del ciclo, al di fuori del corpo del ciclo, questa variabile non è disponibile. In quel caso se nel codice ci sono use strict;, simile appello genererà un errore.

▶ 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.

Se vi è la necessità di utilizzare una variabile contatore al di fuori del corpo del ciclo, è necessario individuare fuori descrizione del ciclo:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $i = 0;

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

print $i;

next e last

In Perl ci sono speciali le parole chiave con cui è possibile influenzare l'esecuzione del ciclo.

La parola chiave next termina l'esecuzione dell'iterazione corrente:

▶ Run
#!/usr/bin/perl

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

E con l'aiuto di last è possibile in qualsiasi momento completare il ciclo:

▶ Run
#!/usr/bin/perl

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

Temi correlati

Altri articoli