Większość prostych programów pisanych w Perlu jest liniowa. Oznacza to, że polecenia w nich zawarte wykonywane są po kolei. Aby wstrzymać lub spowodować wykonanie jakiegoś polecenia można użyć opisanych operatorów logicznych. Jednak programy zawierające pętle i instrukcje mają o wiele większe możliwości. Pętle i instrukcje nazywane są strukturami sterującymi. Perl jest więc językiem sterującym.
Instrukcja if
Blok jest zawsze ograniczony przez nawiasy klamrowe dlatego nigdy nie ma wątpliwości do którego przypisana jest instrukcja if. Sprawdza ona prawdziwość warunku i jeśli jest spełniony powoduje wykonanie bloku kodu. Blok to przynajmniej jedna instrukcja zamknięta w nawiasy klamrowe. Instrukcja if powoduje wykonanie bloku więc nawiasy te są bezwzględnie konieczne.
if ($liczba > 0)
print "Liczba $liczba jest większa od zera.\n";
}
Czasami gdy warunek nie jest spełniony zachodzi konieczność wykonania innego bloku lub bloków kodu. Można do tego celu wykorzystać nieobowiązkowe acz dostępne w Perlu słowo else. Wpisuje się je po pierwszym bloku i powoduje ono wykonanie drugiego bloku jeśli nie jest spełniony pierwszy warunek. Czasem konieczne jest postawienie większej ilości warunków. Do tego celu służy elsif dodawane do każdej możliwości.
if sprawdzeniel
bloki;
elseif sprawdzenie2
blok2;
else sprawdzenie3
blok3;
}
Jeśli okaże się, że "sprawdzeniel" jest prawdą to zostaje wykonany "bloki". Jeśli "sprawdzeniel" nie powiedzie się to zostaje przeprowadzony test "sprawdzenie2". Jeśli ono okaże się prawdą to zostaje wykonany blok programu oznaczony jako "blok2". Ostatni polecenie else powoduje sprawdzenie instrukcji "sprawdzenie3" ale tylko w przypadku gdy poprzednie sprawdzenia zwróciły wartość fałsz. Testów zaczynających się od elseif może być w instrukcji warunkowej kilka. Warunki towarzyszące if i elseif są sprawdzane po kolei, dopóki jeden z nich nie okaże się prawdziwy lub nie zostanie osiągnięte słowo else.
Gdy jeden z warunków zostanie spełniony, jego blok zostanie wykonany a reszta rozgałęzień opuszczona. Oto prosty program opierający się na wykorzystaniu instrukcji if/elseif/else. Sprawdza on czy łańcuch $a składa się z jednego, dwóch lub trzech znaków bądź czy jest zbiorem pustym.