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])
?
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.
尝试这个:
foo(@$args);
foo(@$args);
Or, if you have a reference to foo
:
my $func = \&foo;
...
$func->(@$args);
It's simple. foo(@{$args})
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.