如何在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方式”来实现这一目标?

解决方法

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

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

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...