2013-04-07 38 views
5

Một chức năng gọi perl nhầm lẫn tôi, bất cứ ai có thể giúp tôiPerl chức năng cuộc gọi nhầm lẫn tôi

catFiles gọi là như thế này:

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

catFiles chức năng xác định:

sub catFiles { 

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

I don' Tôi biết tại sao có => ở đó tôi nghĩ rằng nó phải là ,.

+0

'=>' đôi khi được gọi là "dấu phẩy chất béo". – toolic

Trả lời

10

=> là (gần như) tương đương với , trong Perl. (Xem the "official" documentation cho sự khác biệt.)

Thông thường nó được sử dụng khi xác định một hash để chỉ ra mối quan hệ giữa khoá và giá trị:

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

Chúng ta có thể viết nó như my %hash = ('a', 1, 'b', 2); không có thay đổi trong hành vi nhưng điều đó không' trông thật đẹp. Bạn thậm chí có thể làm my $hash = ('a', 1 => 'b', 2); nhưng điều đó chỉ gây nhầm lẫn.

Tương tự như vậy, trong trường hợp của bạn, bạn có thể viết các mã như

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

và nó sẽ làm điều tương tự như các phiên bản =>.

Ở đây nó được sử dụng làm đường cú pháp, tôi đoán rằng nội dung của @LINKFILES sẽ được ghép vào "$output_prefix.links".

Các vấn đề liên quan