Følgende kode illustrerer dette. Les og prøv det: bruke strenge; print "Content-Type: text /html \\ n \\ n"; sub mySub {min $ num1 = 2; min $ num2 = 3; min $ sum = $ num1 + $ num2; min $ kvadrat = $ sum * $ sum; returnere $ square; } Min $ resultat = mySub (); print $ resultat; Denne koden er lik den foregående med tilsetningen av de to siste utsagn. Sist men-en setning kaller subrutine. Denne uttalelsen samtalen er utenfor subrutinen. Høyre operand av uttalelsen er «mySub ()". Det er dette uttrykket som kaller subrutinen.
Når det kaller subrutinen, mottar den verdien som returneres av avkastningen uttalelse i subrutine. Denne verdien blir nå tildelt variabelen, $ resultat. Den siste setningen viser resultatet. En subrutine samtale trenger ikke alltid å tildele en returverdi til en variabel. Subrutiner som ikke har returverdier er kalt ved bare å skrive inn navnet, etterfulgt av parenteser (da semikolon, for å danne en setning). Sist men-ene setningen i koden er: min $ resultat = mySub (); mySub () er funksjonen samtalen. I ActivePerl, parentes er valgfrie. Du kan kalle en funksjon uten å skrive parentes.
Men det er lurt å skrive dem, da dette er nødvendig på andre språk; en programmerer vet mer enn én datamaskin språk. Du kan også ha mellomrom mellom funksjonsnavnet og parentesene; plassen er valgfritt. Parametere og argumenter nå, i ovennevnte subrutine vi kan bare forholde seg til to spesielle tall, som er 2 og 3. Dette er en ulempe. Hvis vi erklærer (skape) og tilordne variabler utenfor subrutinen, så vi kan alltid endre verdiene av variablene, og deretter sende variablene til subrutinen før subrutinen blir utført.
På denne måten skal vi være i stand til å forholde seg til mange andre par av tall. Følgende eksempel illustrerer dette: bruke strenge; print "Content-Type: text /html \\ n \\ n"; min $ num1 = 4; min $ num2 = 5; sub mySub {min $ sum = $ _ [0] + $ _ [1]; min $ kvadrat = $ sum * $