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

hlubenow
 2022-02-06 21:20
#194235 #194235
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
2022-02-06T18:14:45 bianca
Falls doch zeig' mir bitte konkret, wie man das erkennen kann.

Hab' gegen Linuxers kluges Posting keine Einwände, aber ich zeig' auch kurz nochmal, wie ich das meinte:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl

use warnings;
use strict;

use Data::Dumper;

my $io = {links => {refer => {entry => 10}}};
my %tmp_io = %{$io};
$tmp_io{links}{refer} = 4;
print Dumper($io->{links}{refer});

Also, $io ist eine Referenz auf einen anonymen Hash. Dieser enthält weitere anonyme Hashes. Dabei ist $io->{links}{refer} eine Referenz auf einen anonymen Hash, der u.a. den Schlüssel "entry" enthält.
Jetzt macht man mit "%tmp_io eine flache Kopie von dem aus $io dereferenzierten Hash, und ändert darin "$tmp_io{links}{refer}" auf "4" (wie in Deinem Code oben).
Das wird dann über "Data::Dumper" auch in "$io->{links}{refer}" angezeigt, so daß man die Änderung da sehen kann.
Der Unterschied wird erkennbar, wenn Du die Zeile
Code (perl): (dl )
$tmp_io{links}{refer} = 4;

zum Vergleich deaktivierst, bzw. auskommentierst ("#").
Last edited: 2022-02-06 21:22:25 +0100 (CET)

View full thread Dereferenzierung klappt nicht