The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

#!/usr/bin/perl
# Learning RPerl, Section 4.3.2: Multiple Return Values
# [[[ PREPROCESSOR ]]]
# <<< EXECUTE_SUCCESS: 'have $retval0 = 21' >>>
# <<< EXECUTE_SUCCESS: 'have $retval1 = 22' >>>
# <<< EXECUTE_SUCCESS: 'have $retval2 = 23' >>>
# [[[ HEADER ]]]
use RPerl;
use strict;
our $VERSION = 0.001_000;
# [[[ CRITICS ]]]
## no critic qw(ProhibitUselessNoCritic ProhibitMagicNumbers RequireCheckedSyscalls) # USER DEFAULT 1: allow numeric values & print operator
## no critic qw(RequireInterpolationOfMetachars) # USER DEFAULT 2: allow single-quoted control characters & sigils
# [[[ SUBROUTINES ]]]
sub foo_multi { { my integer_arrayref $RETURN_TYPE }; return [21, 22, 23]; }
# [[[ OPERATIONS ]]]
my integer_arrayref $retvals = foo_multi();
my integer $retval0 = $retvals->[0];
my integer $retval1 = $retvals->[1];
my integer $retval2 = $retvals->[2];
print 'have $retval0 = ', $retval0, "\n";
print 'have $retval1 = ', $retval1, "\n";
print 'have $retval2 = ', $retval2, "\n";