Continuo a ricevere ::
confuso con ->
quando si chiamano le subroutine dai moduli. So che ::
è più correlato ai percorsi e in cui il modulo/subroutine è e ->
viene utilizzato per gli oggetti, ma non capisco perché io possa scambiare apparentemente entrambi e non generare errori immediati. Ho moduli perl che fanno parte di un pacchetto più grande, ad es. FullProgram::Part1
Perché '::' e '->' funzionano (ordinariamente) in modo intercambiabile quando si chiamano i metodi dai moduli Perl?
Sono quasi sempre alle prese con i moduli, ma lo sono ancora per motivi traballanti quando si tratta di oggetti in Perl, ma ho accidentalmente facendo questo:
FullProgram::Part1::subroutine1();
invece di
FullProgram::Part1->subroutine1();
così quando ho passando un ref hash per subroutine1 e stati attenti sull'utilizzo $class/$self
a che fare con il riferimento all'oggetto e utilizzare accidentalmente ::
finisco per tirare fuori i miei capelli chiedendo perché il mio hash rif sembra scomparire. Ho imparato la lezione, ma mi piacerebbe davvero una spiegazione della differenza. Ho letto i perldocs e vari siti web su questi, ma non ho visto alcun confronto tra i due (piuttosto difficile per google ...) Tutti apprezzati - sempre bene a capire quello che sto facendo!
alcune buone risposte, difficili da scegliere, ma grazie - sicuramente chiarito le cose! – dgBP