Perl函数调用困惑了我

时间:2013-04-07 02:35:17

标签: perl function-call

perl函数调用困惑了我,有人可以帮助我吗?

catFiles这样称呼:

catFiles( \@LINKFILES => "$output_prefix.links" );

catFiles函数定义:

sub catFiles {

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

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

1 个答案:

答案 0 :(得分:11)

=>(几乎)相当于Perl中的,。 (有关差异,请参阅the "official" documentation。)

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

my %hash = (
  'a' => 1,
  'b' => 2,
);

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

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

catFiles(\@LINKFILES, "$output_prefix.links");

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

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