SNOWMAN Geschrieben 8. September 2004 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.disk Geschrieben 10. September 2004 Teilen 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! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.