SNOWMAN Geschrieben 8. September 2004 Geschrieben 8. September 2004 HI Leute, ich darf seit gestern Perl programmieren und hab zuvor noch nie etwa damit zu tun gehabt, bin als n00b auf dem Gebiet! Hier mein Problem: Wie greif ich auf Werte im Hash zu? Hab ein Script welches Daten aus einer Datei liest und diese dann in den Hash packt, die (so wurden sie mir genannt) Referenzen auf den Hash werden von der Funktion zurückgegeben: return ( $Prodicat, $Prodat_gefunden, $Pricat_gefunden, \%Prodat_Orgid, \%Pricat_Orgid ); \%Prodat_Orgid, \%Pricat_Orgid sind die beiden Werte die ich brauch So kommen sie bei mir zurück: (undef, undef, undef, %prohash, %prihash) = Pruefen_ob_Prodat_und_oder_Pricat_Datei($file); So hab ich es in anderen Scripts gesehen und so stehts auch in den Perlbüchern hier, aber die Weiterverarbeitung funktioniert einfach nicht, wie kann ich nun auf die einzelnen Werte zugreifen??? THX
dr.disk Geschrieben 10. September 2004 Geschrieben 10. September 2004 Lies Dir mal durch wie Referenzen in Perl funktionieren, z.B. in der Manpage (man perlref). Du bekommst eine Referenz auf einen Hash, nicht den Hash. Die Zeile muss also so lauten: (undef, undef, undef, $prohash, $prihash) = Pruefen_ob_Prodat_und_oder_Pricat_Datei($file); Auf die Elemente in diesem Hash greift man dann nicht mit $prohash{element} sondern mit $prohash->{element} zu. Der Vorteil von Referenzen ist in diesem Beispiel, dass der benutzte Speicher des Hashes bei der Rückgabe nicht kopiert werden muss (und so ein Hash kann groß werden), sondern nur die 4 Byte für die Referenz (auf einem 32 Bit System). Kann also eine enorme Speicherersparung sein. Bleib also am Ball, es ist wichtig den Umgang und vor allem auch den Grund für den Einsatz von Referenzen zu verstehen!
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden