Perl subroutines - multiple return values FAQ: Can you share some examples of how to return multiple values from a Perl subroutine?
Did you know that you can return multiple values from a Perl subroutine (function)? As a practical matter I haven't used this feature very much, but I've always thought it was an interesting programming language feature, very different from many other languages.
A simple Perl subroutine to return multiple values
As a quick demonstration of this unique Perl sub (subroutine) feature, here's a simple Perl function named foo
that returns two strings:
# a perl subroutine that returns two strings sub foo { return 'foo', 'bar'; }
As you can see, in a simple case like this, to return multiples values from a Perl subroutine, just separate the values with a comma when using the Perl return operator.
Calling a Perl subroutine that returns multiple values
When you call a Perl subroutine that returns multiple values, you just need to use a syntax like this:
($a, $b) = foo;
This assigns the returned values to my Perl variables $a and $b.
To demonstrate this, if I create a complete Perl script like this:
sub foo { return 'foo', 'bar'; } ($a, $b) = foo; print "a = $a\n"; print "b = $b\n";
and then run this script, the output will look like this:
a = foo b = bar
I think that's pretty cool, and a little bit of a mind-stretcher. You can more or less accomplish the same thing in a language like Java by returning a List, Collection, or other data type that lets you store multiple elements, but you can't simply return two strings, as I've shown here.
More Perl subroutine (sub) information
I hope these examples of how to return multiple values from a Perl subroutine have been helpful.
For more Perl sub (subroutine, or function) information, I just created a Perl subroutine (sub) tutorial, and I'll also be adding other Perl subroutine tutorials here over time.