2013-04-07 97 views
5

一个Perl函数调用搞糊涂了,任何人都可以帮我Perl函数调用困惑我

catFiles称为是这样的:

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

catFiles功能定义:

sub catFiles { 

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

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

+0

'=>'有时被称为“胖逗号”。 – toolic 2013-04-07 12:08:25

回答

10

=>在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"