I have a list that contains arguments I want to pass to a function. How do I call that function?
For example, imagine I had this function:
sub foo {
my ($arg0, $arg1, $arg2) = @_;
print "$arg0 $arg1 $arg2\n";
}
And let's say I have:
my $args = [ "la", "di", "da" ];
How do I call foo
without writing foo($$args[0], $$args[1], $$args[2])
?
Passing Arguments to a Subroutine You can pass various arguments to a subroutine like you do in any other programming language and they can be acessed 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.
By using the backslash operator on a variable, subroutine, or value.
You dereference an array reference by sticking @
in front of it.
foo( @$args );
Or if you want to be more explicit:
foo( @{ $args } );
This should do it:
foo(@$args)
That is not actually an apply
function. That syntax just dereferences an array reference back to plain array. man perlref tells you more about referecences.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With