Thread Dereferenzierung klappt nicht (14 answers)
Opened by bianca at 2022-02-06 09:40

hlubenow
 2022-02-06 18:25
#194232 #194232
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
2022-02-06T11:45:58 haj
$tmp_io{links} ist eine Referenz. Wenn Du also auch mit my %tmp_io = %$io; eine flache Kopie erstellst, dann wird diese Referenz kopiert und zeigt in %tmp_io auf den gleichen Hash. Und wenn Du dann in diesem Hash den Wert des Schlüssels refer änderst, dann änderst Du ihn auch in $io!

Sehr gut erklärt! Das passiert gar nicht so selten, und ist als Fehler oft schwer zu finden.

Wenn ich oben schrieb, mal angucken, was "$io->{links}{refer}" eigentlich ist, dann meinte ich natürlich nicht nur mit "ref()" (was aber schonmal ein erster Anhaltspunkt ist), sondern mit "Data::Dumper". Dann hätte man wahrscheinlich gesehen, das in den Daten was geändert wurde (indem was über die Referenz darauf geändert wurde), und daß man also eine "deep copy" bräuchte.
Last edited: 2022-02-06 18:28:48 +0100 (CET)

View full thread Dereferenzierung klappt nicht