Running perl 5.12.4 Otrzymuję rozbieżności między wynikiem funkcji, gdy hasz jest przypisany w instrukcji return lub wcześniej. Najprostszym przykładem jest:przypisanie perla do skrótu w powrocie podprogramu staje się dziwne
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
Dlaczego (re) przypisanie do mieszania w instrukcji return (2nd przykład) uszkodzony wracającą hash?
potwierdzone. To naprawdę dziwne. Ale kiedy uruchomiłem kod na v14.2 lub v16.3 działał bez problemu → wygląda na to, że został naprawiony, chociaż nie widzę żadnej wzmianki o powiązanych poprawkach w perldeltas. – amon
Uruchamiam twój drugi przykład na perlu 5.16.2, otrzymuję 'b 1 c 2 a 4' – friedo
To trochę dziwne. Mogę ** powielić to na jednej z moich maszyn: 'To jest perl 5, wersja 12, subversion 4 (v5.12.4) zbudowane dla darwin-thread-multi-2level' – chrsblck