2013-04-07 101 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"