У меня есть список, который содержит аргументы, которые я хочу передать функции. Как я вызываю ту функцию?
Например, предположите, что у меня была эта функция:
sub foo {
my ($arg0, $arg1, $arg2) = @_;
print "$arg0 $arg1 $arg2\n";
}
И скажем, я имею:
my $args = [ "la", "di", "da" ];
Как я звоню foo
без записи foo($$args[0], $$args[1], $$args[2])
?
Это должно сделать это:
foo(@$args)
Это на самом деле не является функцией
. Этот синтаксис просто разыгрывает справочник массива обратно на простой массив. Человек Perlref рассказывает вам больше о направлениях.
Вы разыменовываете ссылку на массив, вставляя @
перед ним.
foo( @$args );
Или, если вы хотите быть более откровенным:
foo( @{ $args } );
foo(@$args);
Или, если у вас есть ссылка на foo
:
my $func = \&foo;
...
$func->(@$args);