Next, Redo, Last

Next, Redo, Last

“Loops” zijn een belangrijk onderdeel van een programmeertaal. Het laat ons herhalingen uitvoeren binnen onze code. Perl kent verschillende soorten loops: For, While, Until, Do while zijn voorbeelden hiervan.

Loops kennen alleen een lastig onderdeel: De loop wordt in zijn totaliteit afgehandeld voordat de loop naar het volgende element gaat. Soms is het gewenst dat de loop niet meer verder afgemaakt wordt maar dat meteen naar het volgende element wordt gesprongen of dat de loop voor hetzelfde element nogmaals wordt doorlopen of dat meteen naar het einde wordt gesprongen.

Voor deze problemen is een oplossing bedacht, de Next, Redo, Last statements. Met deze commando’s is een loop te sturen. Hieronder staan een aantal voorbeelden die laten zien hoe de commando’s te gebruiken zijn binnen een loop:

for ($i=1; $i<10; $i++)
   {
   if ($i eq 5)
      { next; }
   print "$i\n";
   }

In het bovenstaande voorbeeld worden alle getallen van 1 tot 9 op het scherm getoond behalve het getal 5. Als dit getal voorvalt sprint de loop naar het volgende element

for ($i=1; $i<10; $i++)
   {
   if ($i eq 5)
      { last; }
   print "$i\n";
   }

In het bovenstaande voorbeeld worden de getallen van 1 tot 4 op het scherm getoond. Na het getal 4 gaat de loop naar het einde.

for ($i=1; $i<10; $i++)
   {
   print "$i\n";
   if (($i eq 5) && (!$done))
      { $done=1; redo; }
   }

Het bovenstaande voorbeeld zal het getal 5 twee keer presenteren. Dit omdat het commando redo wordt gegeven en de loop nogmaals vanaf het begin wordt doorlopen met dezelfde waarde. De $done variabele zorgt ervoor dat de loop niet eindeloos door blijft gaan.

Op deze manier zijn loops te sturen. Ik heb voor de voorbeeldjes gekozen voor FOR loops. Deze commando's zijn binnen Perl natuurlijk ook te gebruiken bij andere soorten zoals de While en de Foreach.