Ho guardato incredulo questa sequenza:elenchi di argomenti di subroutine perl - "passa per alias"?
my $line;
$rc = getline($line); # read next line and store in $line
avevo capito da sempre che argomenti Perl stati passati per valore, quindi, quando ho bisogno di passare una grande struttura, oppure passare una variabile essere aggiornato, ho passato un riferimento.
Leggere la stampa fine in perldoc, tuttavia, ho appreso che @_ è composto da alias per le variabili menzionate nell'elenco degli argomenti. Dopo aver letto il prossimo bit di dati, getline() lo restituisce con $ _ [0] = $ dati;, che memorizza $ data direttamente in $ linea.
Mi piace così: è come passare per riferimento in C++. Tuttavia, non ho trovato un modo per assegnare un nome più significativo a $ _ [0]. C'è qualche?
sì, Perl è sempre pass-per-riferimento – newacct
Bene - non deve essere confuso con i riferimenti Perl, che sono più come i puntatori C in quanto devono essere esplicitamente dereferenziati. – Chap
non $ arg = shift; $ arg = $ dati; fallo? O cambierà invece una copia dell'argomento? EDIT: Ho testato gli indirizzi di uno scalare passato e l'argomento 'shift', ed i risultati dicono che il turno fa una copia, quindi assegnare $ arg come sopra non influenzerà $ line come previsto. :( – sundar