
Har du en bit av programkoden som kommer att köras flera gånger från olika delar av scriptet, eller
bara för att strukturera upp koden kan du använda dig av så kallade subrutiner. Dessa är som små
funktioner som definieras med sub. En subrutin kan se ut så här.
sub skriv_html {
print "Content-type:text/html\n\n";
print "<html>\n";
print "<head><title>Mitt CGI-script</title></head>\n";
print "<body>\n";
}
Koden som står i subrutinen kommer inte att exekveras förrens den anropas. I exemplet nedan anropas
subrutinen och en rad till skrivs.
&skriv_html; print "Detta är första raden på sidan.<br>\n"
Exemplet kommer först att köra koden som finns i subrutinen skriv_html och sedan fortsätta med
print-satsen. Det som skrivs ut är alltså;
Content-type:text/html
<html>
<head><title>Mitt CGI-script</title></head>
<body>
Detta är första raden på sidan.<br>
Du kan även skicka med data till en subrutin för att sedan använda detta data till en beräkning i
subrutinen. Data som skickas till en subrutin lagras i en array med namnet "_". Om vi kallar det data
som vi skickar till subrutinen för parametrar så finns alltså första parametern i $_[0], den
andra i $_[1] osv.
addera(2,3);
sub addera {
$summa = $_[0] + $_[1];
print $summa;
}
Vi har nu lärt oss att skicka data till en subrutin, men ofta vill man använda detta data för att
göra en beräkning och sedan använda resultatet i en annan del av scriptet. Då kan det vara önskvärt
att returnera ett värde från subrutinen. Det gör man med kommandot return.
$summa = addera(2,3);
print $summa;
sub addera {
$summa = $_[0] + $_[1];
return $summa;
}