У меня есть функция, где я хочу проверить, существует ли путь, и если да, добавьте это в массив. Вот что я пробовал:Как принять массив выходных параметров и скаляр в 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» для этого?
Этот код не компилируется для меня на Perl 5.16: 'Не может объявить массив разыменования в«мой»в. ..' – toolic
@toolic: Я, вероятно, сломал его, анонимизируя его для этого сообщения. –
@toolic: Кроме того, копия Perl, которую я использую, является древним 5.6, поэтому возможно, что они исправили это с тех пор. –