如何在perl中接受输出参数数组和标量?

时间:2016-01-27 20:40:45

标签: perl

我有一个函数,我想检查路径是否存在,如果存在,则将其添加到数组中。这是我试过的:

# If a path exists, adds the canonical version of that path to an array
sub AddPathCandidate {
    my (@$target, $path) = $_;
    die ('path needed') unless defined($path);
    $path = File::Spec->canonpath($path);
    if (-e $path) {
        push(@{$target}, $path);
    }
}

调用者看起来像:

my @exampleDirs = ();
AddPathCandidate(\@exampleDirs, $inDir . 'a');
AddPathCandidate(\@exampleDirs, $inDir . "../b/a/$arch");
AddPathCandidate(\@exampleDirs, $inDir . "../../b/a/$arch");

但是“死”语句总是执行; AddPathCandidate的第二个参数没有以某种方式通过。

我在这里尝试做的甚至可能还是有更多的“perl-ish方式”来实现这个目标?

1 个答案:

答案 0 :(得分:7)

在解压缩参数时将变量声明为$target,并从@_解压缩:

my ($target, $path) = @_;
    ^                 ^^