2015-08-29 6 views
7

In alcuni moduli Perl vedo codice:Quale motivo usare '-' accedere al nome della chiave hash perl?

if (exists $h->{Location}) { 
    %args = (%args, -Status => 302); 
} 

Perché autore usa -Status invece di Status?
Perché ho hackerato i miei moduli, quando devo usare '-' accedere ai nomi delle chiavi di hash?

UPD
risposte lettura sembra che sono devono essere lo stesso, ma non sono

my $a = { -status => 'a', status => 3, }; 
print $a->{ status }, $a->{ -status }; 
print pp $a; 

USCITA

3a{ -status => "a", status => 3 } 

Sintesi dei miei perl5 (revisione 5 versione 20 di eversione 2) configurazione:

Questo significa che il vecchio modulo è rotto ora?

risposta

1

È una convenzione. Simile alle opzioni che un programma può prendere dalla riga di comando, ad esempio 'ls -l'. Molti programmatori Perl lo usano per essere più chiaro quando si passano i parametri a una subroutine. In questo modo i tuoi programmi sono più leggibili e facili da mantenere.

5

È un artefatto storico. Uno dei primi principali moduli a utilizzare la convenzione argomento hash-key per le sue funzioni era Perl/Tk, e riportava la convenzione di denominazione del trattino iniziale sulle chiavi da TCL/Tk (da cui era stato eseguito il porting). Si è diffuso ed è stato abbastanza popolare per un po '. Prima che avessimo l'operatore "fat comma" (=>), questo mi ha aiutato a distinguere i nomi delle chiavi e i loro argomenti. Oggi non c'è davvero alcun motivo per usarlo, a parte il gusto personale.

+0

Vuoi dire che -status e status point stesso tasto? –

+1

No. O almeno non automaticamente. –