#!/usr/bin/perl
# Learning RPerl, Section 4.4.1: Variadic Subroutines
# [[[ PREPROCESSOR ]]]
# <<< EXECUTE_SUCCESS: 'have $num_args = 1' >>>
# <<< EXECUTE_SUCCESS: 'have $args2 = ' >>>
# <<< EXECUTE_SUCCESS: 'have $args3 = ' >>>
# <<< EXECUTE_SUCCESS: 'have $args4 = ' >>>
# <<< EXECUTE_SUCCESS: 'have $num_args = 2' >>>
# <<< EXECUTE_SUCCESS: 'have $args2 = howdy' >>>
# <<< EXECUTE_SUCCESS: 'have $args3 = ' >>>
# <<< EXECUTE_SUCCESS: 'have $args4 = ' >>>
# <<< EXECUTE_SUCCESS: 'have $num_args = 3' >>>
# <<< EXECUTE_SUCCESS: 'have $args2 = howdy' >>>
# <<< EXECUTE_SUCCESS: 'have $args3 = doody' >>>
# <<< EXECUTE_SUCCESS: 'have $args4 = ' >>>
# <<< EXECUTE_SUCCESS: 'have $num_args = 4' >>>
# <<< EXECUTE_SUCCESS: 'have $args2 = howdy' >>>
# <<< EXECUTE_SUCCESS: 'have $args3 = doody' >>>
# <<< EXECUTE_SUCCESS: 'have $args4 = time' >>>
# [[[ HEADER ]]]
use
RPerl;
use
strict;
use
warnings;
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
baz_variadic_static {
{
my
void
$RETURN_TYPE
};
# PERLTIDY BUG, failure to put a space between $arg3 and closing )
# (my integer $num_args, my string_arrayref $args) = @ARG;
(
my
integer
$num_args
,
my
string_arrayref
$args
) =
@ARG
;
my
string
$arg2
=
q{}
;
my
string
$arg3
=
q{}
;
my
string
$arg4
=
q{}
;
if
(
$num_args
>= 2) {
$arg2
=
$args
->[0]; }
if
(
$num_args
>= 3) {
$arg3
=
$args
->[1]; }
if
(
$num_args
>= 4) {
$arg4
=
$args
->[2]; }
'have $num_args = '
,
$num_args
,
"\n"
;
'have $args2 = '
,
$arg2
,
"\n"
;
'have $args3 = '
,
$arg3
,
"\n"
;
'have $args4 = '
,
$arg4
,
"\n\n"
;
return
;
}
# [[[ OPERATIONS ]]]
baz_variadic_static(1, []);
baz_variadic_static(2, [
'howdy'
]);
baz_variadic_static(3, [
'howdy'
,
'doody'
]);
baz_variadic_static(4, [
'howdy'
,
'doody'
,
'time'
]);