Vetvenie a cykly
Vetvenie
If
Základným príkazom vetvenia je príkaz If. Zabezpečuje nepriamo aj funkciu viacnásobného vetvenia a to v spolupráci s elsif a else. Vetvenie potom vyzerá takto:
if ($a == $b)
{
# príkazy
}
elsif ($a == $c)
{
# príkazy
}
elsif ($a < $c )
{
# príkazy
}
else
{
# príkazy
}
Unless
Okrem IF-u je v PERLi ešte jeden príkaz na vetvenie - unless. Jedná sa vlastne o akúsi auto negáciu. Vetvenie nastane, ak nie je splnená podmienka.
unless ($a eq $b)
{ # pokiaľ neplatí podmienka
# telo vykonania
}
Perl umožňuje aj takzvaný postfix iného príkazu podmienkou:
$a = 100 if ($b eq 'ahoj'); # priradí A hodnotu 100 ak B = 'ahoj'
$c = “foo“ unless (defined($a)); # priradí C reťazec 'foo' ak nie je definovaná remenná A
Cykly
While
While cyklus sa vykonáva dovtedy, kým platí podmienka. Tento cyklus sa používa aj na nekonečné slučky.
$a = 10; # nastavenie začiatočnej podmienky
while ($a>0) # cyklus sa opakuje pokiaľ a je väčšie od 0
{
#telo vykonávania cyklu
}
Until
Until má ku while podobný vzťah ako unless k if, teda v prípade until je cyklus v činnosti, kým sa podmienka nesplní.
For
For cyklus je najbežnejšou formou cyklov, ktorá sa vyskytuje v každom programovacom jazyku. Perl syntax príkazu for je veľmi podobná syntaxi z jazyka C.
for (my $i = 0,$i < 10,$i++)# vytvor premennú I, opakuj kým je podmienka splnená, príkaz na inkrement
{
#telo cyklu
}
Foreach
Foreach je v Perli najbežnejšie prevádzaným typom cyklu. Foreach je cyklus, ktorý ako vstupný parameter dostáva pole, nad ktorého každým prvkom má vykonať cyklus. Táto vlastnosť umožňuje tvoriť cykly bez exaktnej znalosti veľkosti poľa.
foreach $item (@zoznam)# do pomocnej premennej $item dáva cyklus foreach hodnotu z poľa
{
print $item.“\n“; # do nového riadku sa vypíše položku zo zoznamu
}
Last, next
Okrem kontinuálneho vykonávania príkazov cyklov Perl umožňuje aj ukončenie cyklu last, kedy aktuálne bežiaca iterácia cyklu bude zároveň poslednou bez ohľadu, či sú alebo nie sú splnené podmienky ukončenia.
Prípadne next je skočenie na ďalšiu iteráciu, ukončením aktuálneho vykonávania tela cyklu sa prejde na nasledujúcu iteráciu. Tieto príkazy je možné používať v tele ľubovolného cyklu.
@zoznam = ('Janko', 'Marienka', 'Jozko', 'Imro', 'Ferko', 'Mrkvak', 'Peter'); # obsah poľa zoznam
foreach my $name (@zoznam)
{
next if ($name eq 'Imro'); # položka Imro je ignorovaná, nevypíše sa
print $name,“\n“;
last if ($name eq 'Mrkvak'); # cyklus skončí, keď sa vypíše položka mrkvak
}
Výpis: Janko, Marienka, Jozko, Ferko, Mrkvak

