2013-04-07 9 views
5

Perl wywołanie funkcji mylić mnie, może ktoś mi pomożePerl wywołanie funkcji mylić mnie

catFiles nazywa tak:?

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

catFiles funkcja definiować:

sub catFiles { 

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

I don” t wiesz, dlaczego istnieje => tam, który myślę, że powinien to być ,.

+0

'=>' jest czasami znany jako "gruby przecinek". – toolic

Odpowiedz

10

=> jest (prawie) równoważne z , w języku Perl. (Patrz the "official" documentation różnic.)

Zazwyczaj jest używany przy określaniu hash, aby wskazać zależność pomiędzy kluczem a wartość:

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

Moglibyśmy napisać go jako my %hash = ('a', 1, 'b', 2); bez zmian w zachowaniu, ale to nie robi” wyglądają równie ładnie. Możesz nawet zrobić my $hash = ('a', 1 => 'b', 2);, ale to jest po prostu mylące.

Podobnie w danym przypadku można napisać kod jak

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

i byłoby zrobić to samo jak wersja =>.

Tutaj używa się jako cukru syntaktycznego, co oznacza, że ​​zawartość @LINKFILES zostanie złączona z "$output_prefix.links".

Powiązane problemy