Perl函数调用困惑了我

use*_*416 5 perl function-call

一个perl函数调用让我感到困惑,任何人都可以帮助我吗?

catFiles 像这样叫:

catFiles( \@LINKFILES => "$output_prefix.links" );
Run Code Online (Sandbox Code Playgroud)

catFiles 功能定义:

sub catFiles {

    unlink("$_[1]") if(exists $_[1]);
    system qq( cat "$_" >> "$_[1]" ) for @{$_[0]};
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么=>我认为它应该是一个,.

mio*_*rel 11

=>(差不多)相当于,Perl.(有关差异,请参阅"官方"文档.)

通常在定义散列时使用它来指示键和值之间的关系:

my %hash = (
  'a' => 1,
  'b' => 2,
);
Run Code Online (Sandbox Code Playgroud)

我们可以把它写成my %hash = ('a', 1, 'b', 2);没有改变行为,但看起来不太好.你甚至可以这样做,my $hash = ('a', 1 => 'b', 2);但这只是令人困惑.

同样,在您的情况下,您可以将代码编写为

catFiles(\@LINKFILES, "$output_prefix.links");
Run Code Online (Sandbox Code Playgroud)

它会与=>版本做同样的事情.

在这里它被用作语法糖,我想这表明@LINKFILES将被连接成的内容"$output_prefix.links".