6

我有一个列表,其中包含要传递给函数的参数。我如何调用该函数?

例如,假设我有这个功能:

sub foo {
  my ($arg0, $arg1, $arg2) = @_;
  print "$arg0 $arg1 $arg2\n";
}

假设我有:

my $args = [ "la", "di", "da" ];

foo不写怎么打电话foo($$args[0], $$args[1], $$args[2])

4

5 回答 5

11

@您可以通过粘贴在它前面来取消引用数组引用。

foo( @$args );

或者,如果您想更明确:

foo( @{ $args } );
于 2010-01-18T18:38:12.000 回答
9

这应该这样做:

foo(@$args)

这实际上不是一个apply函数。该语法只是将数组引用解引用回普通数组。man perlref告诉你更多关于参考的信息。

于 2010-01-18T18:37:55.410 回答
6

试试这个:

foo(@$args);
于 2010-01-18T18:37:31.167 回答
4
foo(@$args);

或者,如果您有参考foo

my $func = \&foo;
...
$func->(@$args);
于 2010-01-18T18:38:24.263 回答
2

这很简单。富(@{$args})

于 2010-01-18T18:38:34.840 回答