Schrift
[thread]6556[/thread]

Objekreferenz als Hashschlüssel ablegen



<< >> 4 Einträge, 1 Seite
alexus-777
 2004-09-01 22:17
#49801 #49801
User since
2004-04-13
121 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich hab ne Subroutine die eine Schleife enthält, welche während des Durchlaufs einige Objekte erzeugt und entsprechende Referenzen als Hashschlüssel ablegt.

Code: (dl )
1
2
3
4
5
my %hash;
sub test{
my $obj = Test::class->new('bla1'=>'test','bla2'=>'test2');
$hash{$obj}=1;
}


Problem: nachdem subroutine beendet wurde, enthält hash zwar noch die Speicheradressen, aber die Objekte existieren nicht mehr. Ich dachte, dass ein Objekt existiert, solange wenigstens eine Referenz drauf zeigt. Warum funktioniert das hier nicht?

PS: wenn ich die Refs in ein Array ablege, dann klappts

Danke im Voraus
Gruß Alexander
Taulmarill
 2004-09-01 22:27
#49802 #49802
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
weil die einzige referenz auf das objekt in der variable $obj liegt.
als du $obj als hashkey benutzt hast, wurde der key aus dem string generiert den man bekommt, wenn man refernzen nicht als solche behandelt.
hashkeys sind immer strings, keine referenzen, variablen, handles, etc.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
alexus-777
 2004-09-01 22:30
#49803 #49803
User since
2004-04-13
121 Artikel
BenutzerIn
[default_avatar]
Danke ;) wieder was gelernt :)
betterworld
 2004-09-02 02:15
#49804 #49804
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
<< >> 4 Einträge, 1 Seite



View all threads created 2004-09-01 22:17.