Thread Referenzen Problem : sehr seltsam (7 answers)
Opened by marky at 2008-05-29 20:34

sid burn
 2008-05-30 01:50
#110470 #110470
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Öhm ein

Code: (dl )
if ( exists $SESSION->{foo}{bar}{baz} ) { ... } 


enthält automatisch auch eine Zuweisung...

Wenn mämlich der eintrag "foo" in der ersten ebene nicht existiert dann erstellt du mit "$SESSION->{foo}{bar}..." bereits das element "foo" als Hasheintrag in der erste ebene. Jeder undefinierte Wert in Perl wird wenn du ihn derenferzierst automatisch den Typ zugeordnet so wie du auf ihn zugreift.

Deswegen gehen ja auch sachen wie.

Code: (dl )
push @{$irgendwas->{werte}}, $wert

Auch wenn du vorher nirgendswo ein
Code: (dl )
$irgendwas->{werte} = [];

geschrieben hast. In diesem Fall wird dann der Eintrag werte beim ersten zugriff auch automatisch erstellt und es wird automatisch eine Arrayreferenz daraus gemacht.

Und da du letztendlich direkt auf "->{foo}{bar}{baz}" zugreifst wird automatisch foo erstellt, damit dieses wiederum als hshref dereferenziert werden kann damit dort ein bar erstellt wird. Und dann wird erst gebrüft ob auf dieser ebene ein "baz" existiert.

Wenn dann musst du es so machen wie "murphy" sagte.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Referenzen Problem : sehr seltsam