Thread Hash als Option missbrauchen (118 answers)
Opened by bloonix at 2005-12-19 02:24

steffenw
 2005-12-26 13:43
#61070 #61070
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Du kannst nur eine Referenz blessen, von welchem Typ die ist, ist ziemlich egal. Oft nimmt man eine Hashreferenz. An die kann man natürlich die wildesten Datenkonstruktionen anhängen. In denen können auch wieder Objekte vorkommen. Man ist da völlig frei - Perl eben.
Code: (dl )
1
2
3
4
5
6
7
bless %i_stats, %param, $class; # geht natürlich nicht
bless {i_stats => \%i_stats, param => \%param}, $class; # wäre ein Weg
# z.B. Zugriffsmethode
sub getIStats
my $self = shift;
$self->{i_stats} # gibt eine Referenz auf den ursprünglichen Hash %i_stats zurück
}

Wenn Du den Hash %i_stats mit my in der new-Methode deklarierst, dann geht Dir am Ende der Methode new zwar der Name des Hashes verloren aber nicht die Daten, weil diese über die Referenz gehalten werden. Erst wenn letztendlich das Objekt zerstört wird, geht die geblesste Referenz verloren und wenn die Daten keine andere Referenz hält, verschwinden auch diese aus dem Speicher.
$SIG{USER} = sub {love 'Perl' or die};

View full thread Hash als Option missbrauchen