hi,
Was mich aber wundert (muss ich eine Wissenslücke habe) warum
@{$public->{}
nicht das gleiche ist wie@$public->{}
, magst du mir das vielleicht erklären ohne auf die perldoc zu verweisen ;) ?
Es kann das Gleiche sein, muss aber nicht. Schau Dir am Besten mal das Beispiel an:
use strict;
use warnings;
use Data::Dump qw(dump);
my $ref = {
foo => {1 => 'eins'},
bar => {2 => 'zwei'},
};
%{$ref->{foo}} = (); # { bar => { 2 => "zwei" }, foo => {} }
%$ref->{foo} = (); # { bar => { 2 => "zwei" }, foo => undef }
print dump $ref;
Das gibt unterschiedliche Ergebnisse und hängt damit zusammen, wie Perl die Referenzen auflöst, das ist oben gut zu sehen, denke ich.
Das Heimtückische daran ist, dass es nicht einmal eine Fehlermeldung gibt und der fehlende Cast erst viel später bemerkt wird.
Hotti