Jak w prawie każdym języku tak i w Perlu możemy zapisać część kodu w postaci procedur i odwoływać się do nich w późniejszym biegu programu. Procedury systematyzują i skracają kod programu. W Perlu składają się one ze słowa kluczowego sub i następującego po nim bloku operacji. Przykładowo:
sub moja
{
print "To moja procedura.";
}
Tak zapisaną procedurę możemy wywoływać w dalszej części programu:
while (true) # pętla nieskończona
{
&moja; # wywołanie procedury
}
Do procedury możemy przekazywać zmienne pochodzące z innych części programu, wywołując ją w następujący sposób:
&moja(12); # wywołanie procedury z jednym parametrem
&moja(12, $_); # wywołanie procedury z dwoma parametrami
Prosta procedura, którą stworzyliśmy nie reaguje w żaden sposób na przekazywane jej zmienne.
We wnętrzu procedury możemy się dostać do przekazanych jej zmiennych poprzez tablicę o nazwie @_:
sub moja2
{
print "Procedura została wywołana z następującymi parametrami :\n";
print @_;
}
Stworzone przez nas procedury także zwracają wartości.
sub moja3
{
if ($_[0] > $_[1])
{
$_[0];
}
else
{
$_[1];
}
}
Procedura moja3 wywołana z dwoma zmiennymi sprawdza, która z nich jest większa i zwraca jej wartość. A oto jej konkretne zastosowanie:
$wieksza = &moja3(12, 32); # zostanie odnaleźona większa z dwóch
# liczb i umieszczona w zmiennej $wieksza