What are subroutines in Perl?

Perl is a flexible, object-oriented language that allows you to create and define your functionsuser-defined.

Subroutines are blocks of code that can be reused across programs. They are the same as functions or user-defined functions in Perl.

We can either define a subroutine in the same program or import it from another file using the use, do, or require statements.

Syntax

Generally, we can define a subroutine by following the syntax below:

# Function/Subroutine definition
sub subroutine_name {
  ...
  ...
  #statements the subroutine will execute
}

# Calling a subroutine
subroutine_func();

We have to write the sub keyword before defining the subroutine in the program.

subroutine structure in Perl

Subroutines and arguments

We can pass several arguments to a subroutine, such as:

  • Lists
  • Hash
  • Arrays
  • Values
  • Variables

Code

Passing variables, arrays, lists, and hashes as arguments

The following code snippet shows how to pass an array as an argument in a subroutine.

We use the symbol ($_) to pass single variable arguments in a subroutine, and we use the (@_) character to pass argumentssuch as arrays, hashes, and lists.

my $var1 = 5;
my $var2 = 6;
# calling subroutine with single variable parameters
subroutine_variables($var1, $var2);
sub subroutine_variables{
$_[0] = 6;
$_[1] = 5;
}
print "[1] Single variable parameters
var1 = $var1, var2 = $var2 \n";
sub subroutine_array {
printf "@_\n";
return;
}
sub subroutine_list {
my @list = @_;
print "[3] List parameter in subroutine is: @list\n";
}
$var1 = 10;
@sttr1 = (1, 2, 3, 4);
sub subroutine_hash{
my %hash = @_;
for my $key (keys %hash) {
print "[4] Key is: $key and value is: $hash{$key}\n";
}
}
%hash = ('Dish1', 'Soup',
'Dish2', 'Custard',
'Dish3', 'Rice');
# calling subroutine with array parameter
&subroutine_array("[2] What", "are", "subroutines", "in Perl");
# calling subroutine with list parameter
subroutine_list($var1, @str1);
# calling subroutine with hash parameter
subroutine_hash(%hash);

Explanation

The code snippet above displays how to pass and print different arguments from subroutines in Perl.

From line[1] to line[12], we can see that subroutine_variable actually swaps the values of $var and $var2.

The subroutine_array includes a printf statement with the symbol (@_) that accepts arguments as array indices in line[38].

subroutine_list accepts the same symbol (@_) as an array to pass arguments as parameters – it consists of a @list variable that includes two parameters: an array (@str1) and a scalar variable ($var).

subroutine_hash works when we pass a key along with a value as parameters into it. This subroutine includes a for each loop that iterates and prints the key-value pair in every statement.

Free Resources

Copyright ©2025 Educative, Inc. All rights reserved