בואו נזכר בתוכנית שראינו בדף הראשון:
#!usr/local/bin/perl
$total = 0;
&getnumbers;
foreach $number (@numbers)
{
    $total += $number;
}
print ("the total is $total \n");
sub getnumbers {
    $line = ;
    $line =- s/^\\s+\\s*\\n\$//g;
    @numbers = split(/\\s+/, $temp);
}
הפונקציה הזו סובלת מחיסרון אחד - היא מוחקת כל ערך שכבר קיים במשתנים  @numbers , $line , $temp
לפונקציות בפרל יש תכונה שעוזרת לפתור את הבעיה הזו. הערך של הביטוי האחרון שחושב בפונקציה נתפש אוטומטית כערך המוחזר של הפונקציה.
בפונקציה הזות הביטוי האחרון הוא:  @numbers = split(/\\s+/, $line);
הערך של הביטוי הזה הוא רשימת המספרים, שמאוחסנת המערך  numbers.
כשמחליטים על שם לפונקציה, רצוי לא להשתמש בשמות של פונקציות ספריה של פרל. זה חוקי ואפשרי, בגלל הסימן & לפני שם הפונקציה שלנו, אבל אם שוכחים את ה & (או משמיטים אותו, כפי שניראה בהמשך) זה עלול להוביל לטעויות.
ניתן להגדיר פונקציות בכל מקום בקובץ התוכנית. גם בתוך קטע קוד אחר (למרות שזה חוקי לגמרי, לא ניתן דוגמא, כדי לא להקנות לכם "הרגלים רעים").
אם הגדרנו את הפונקציה לפני שאנו קוראים לה, אין צורך להשתמש בסימן &, בגלל שהמפענח כבר מכיר את הפונקציה. אם אתם מעדיפים להגדיר את כל הפונקציות שלכם בסוף התוכנית, עדיין אפשר להצהיר עליהן
בהתחלה ובכך לגרום למפענח להכיר אותן.
#!usr/local/bin/perl
......
sub my_func;......
my_func;......
sub my_func {
print("this is my subroutine \n");
}
עלולים להיות מקרים בהם קריאה לפונקציה בלי לצרף & גוררת התנהגות בלתי מוסברת. אם נתקלתם במקרה כזה, פשוט הוסיפו את התו & כדי להסיר ספק.
להוספת תגובה, אנא התחברו לדרכונט.