Running perl 5.12.4 È possibile ottenere la disparità tra il risultato di una funzione quando un hash viene assegnato all'interno dell'istruzione return o in precedenza. Più semplice esempio è:perl assegnazione a hash in subroutine return diventa strana
perl -e 'sub s1 {
my @a=qw/b 1 c 2 a 3 a 4/;
my %[email protected];
return %h
}
print "@{[ s1()]}\n"'
c 2 a 4 b 1
perl -e 'sub s1 {
my @a=qw/b 1 c 2 a 3 a 4/;
my %[email protected];
return %[email protected]
}
print "@{[ s1()]}\n"'
c 2 c 2 a c
Perché la (ri) assegnazione di hash nella dichiarazione di ritorno (2 ° esempio) corrotto l'hash restituita?
Confermato. Questo è veramente strano Ma quando ho eseguito il codice su v14.2 o v16.3 ha funzionato senza problemi → sembra essere stato corretto, anche se non riesco a vedere alcuna menzione delle correzioni correlate nelle perldeltas. – amon
Esecuzione del secondo esempio su perl 5.16.2, ottengo 'b 1 c 2 a 4' – friedo
Questo è un po 'strano. Posso ** replicarlo su una delle mie macchine: 'Questo è perl 5, versione 12, subversion 4 (v5.12.4) creato per darwin-thread-multi-2level' – chrsblck