Thread Aus dem String einer Referenz wieder eine Referenz machen
(5 answers)
Opened by xubaso at 2009-06-27 12:57 2009-06-27T10:57:45 xubaso Ja, das geht, aber nur mit Hilfe der C API für Perl und Du willst das auch gar nicht tun ;-) Schliesslich programmiert man nicht zuletzt aus dem Grund in Perl, solche gefährliche Zeigermagie zu vermeiden. Die Hauptproblem sind, dass Du zum einen sicherstellen müsstest, dass die Adresse, die Du in eine Referenz verwandeln willst, wirklich zu einem Perlobjekt gehört und zum anderen, dass das Objekt auf das Du eine Referenz rekonstruierst nicht schon längst dealloziert wurde. Wenn Du das nicht tust, dann hast Du eine sichere Methode um völlig undefiniertes Verhalten auszulösen -- am wahrscheinlichsten ist natürlich, dass Perl mit einem Speicherzugriffsfehler abstürzt, aber wenn Dein Rechner explodiert, darfst Du Dich auch nicht wundern ;-) Insbesondere für den Fall von Objektreferenzen als Hashschlüssel wäre das Wiederherstellen der Referenzen aus den beschreibenden Strings also ziemlich sinnlos, denn wenn man nicht irgendwo anders als im Hashschlüssel noch eine echte Referenz auf das fragliche Objekt ablegt, dann wird es auf jeden Fall freigegeben, bevor man die Referenz rekonstruieren kann. Um sicherzustellen, dass eine weitere Referenz vorhanden ist, wäre es am einfachsten, im Wert zum fraglichen Schlüssel zusammen mit den eigentlichen Nutzdaten noch einmal eine Objektreferenz abzulegen. Dann ist es aber überflüssig den Schlüssel in eine Referenz zu verwandeln. When C++ is your hammer, every problem looks like your thumb.
|