Passing Arguments to a Subroutine in Perl

You can pass various arguments to a Perl subroutine like you do in any other programming language and they can be accessed inside the function using the special array @_. Thus the first argument to the function is in $_[0], the second is in $_[1], and so on.

You can pass arrays and hashes as arguments like any scalar but passing more than one array or hash normally causes them to lose their separate identities. So we will use references ( explained in the next chapter ) to pass an array or hash.

Let's try the following example, which takes a list of numbers and then prints their average −


 Live Demo

# Function definition
sub Average {
   # get total number of arguments passed.
   $n = scalar(@_);
   $sum = 0;
   foreach $item (@_) {
      $sum += $item;
   $average = $sum / $n;
   print "Average for the given numbers : $average\n";
# Function call
Average(10, 20, 30);


When the above program is executed, it produces the following result −

Average for the given numbers : 20