Bucles

Els bucles son blocs de codi que s'executen vàries vegades. Normalment s'utilizen per a accions repetitives, recòrrer estructures de dades, etc.

for/foreach

Un bucle foreach s'utilitza normalment per iterar sobre una llista o vector. Per exemple:

foreach my $element (1, 2, 3, 4, 5) {
    say $element;
}

Evidentment, també podeu passar-hi un vector:

my @vector = (1 .. 5);
foreach my $element (@vector) {
    say $element;
}

Com heu vist, creem un variable $element especial que conté cada l'element del vector en cada iteració. Tingueu present que si canvieu $element esteu canviant el valor del vector:

my @vector = (1 .. 5);
foreach my $element (@vector) {
    $element *= 2;
}

foreach my $element (@vector) {
    say $element;
}

Exercici

Imprimiu únicament els valors parells de 0 a 10:

foreach my $element (...) {
    if (...) {
        ...
    }
}

while

while és un bucle més avançat que itera mentre una expressió és certa.

my $i = 10;
while ($i > 0) {
    say $i;

    $i = $i - 1;
}

Quan l'expressió $i > 0 és falsa, el bucle s'atura.

Exercici

Imprimiu només els valors senars de 0 a 10:

my $i = ;
while ($i ...) {
    if (...) {
        ...
    }
}

Sortir d'un bucle

Sovint voldreu sortir d'un bucle sense esperar a que finalitzi. Per fer-ho, podeu utilitzar el mot last:

my $i = 0;
while ($i < 100) {
    last if $i == 10;

    say $i;

    $i = $i + 1;
}

Aquest bucle no iterarà 100 vegades per què el finalitzem quan $i és 10.