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

それは簡単です。foo(@{$引数})

于 2010-01-18T18:38:34.840 に答える