Ez alapján a lehetséges formák:
Az if utasítás szintaxisa itt egyértelmű lesz, mivel a BLOKK nem állhat egyetlen utasításból.
A while ciklus törzsében végrehajtott next utasítás hatására a vezérlés a continue BLOKK-ra kerül, majd újra elindul a ciklusmag.
Ez a szokásos C-beli ciklus formája. A következő két forma ekvivalens:
for($i = 1; $i < 10; $i++) { $i = 1; ... while($i < 10) { } ... } continue { $i++; }
CIMKE foreach változó (TOMB) BLOKK
Ez a shell-ekben meglévő ciklus egy változata. Itt a változó sorban felveszi a TOMB elemeit értékül, és így indul el a ciklusmag.
CIMKE BLOKK continue BLOKK
Ez a végtelen ciklus volt...
A ciklusokban használható a next, a last és a redo utasítás, melyek a ciklusbeli utasítások végrehajtását vezérlik. A fent említett next hatására a futás a ciklus elejére kerül, és a feltétel újratesztelésével folytatódik a működés. A redo ehhez hasonló, csak itt a feltétel tesztelése nélkül kerül a végrehajtás a ciklus első utasítására. A last pedig a ciklusból kiugrik, és az utána következő első utasításon folyik tovább a program végrehajtása. A három utasítás használatában érdekesség, hogy mindegyiket címkézni is lehet és ekkor az ugrások az adott címkével ellátott ciklusra vonatkoznak. Mivel a blokk egy egyszer lefutó ciklusnak tekinthető, ezért ezek az utasítások blokkban is használhatóak.
A switch utasításra nincs külön forma, de van rá egypár lehetséges megoldás, például:
SWITCH: { /^abc/ && do { $abc = 1; last SWITCH; }; /^def/ && do { $def = 1; last SWITCH; }; /^xyz/ && do { $xyz = 1; last SWITCH; }; $nothing = 1; }
A /âbc/ alakú feltételek mintaillesztésre szolgálnak. Ha egy minta illeszkedik a $_ változó tartalmához, akkor a hozzá tartozó feltétel második tagja is kiértékelésre kerül, azaz a do blokk is végrehajtódik.