Guybrush Threepwood Geschrieben 10. April 2003 Geschrieben 10. April 2003 Hi, wie kann ich in Perl einer Funktion eine Referenz übergeben? Also so das die Funktion die ihr übergebene Variavle ändert. Gruß Guybrush Zitieren
korea1 Geschrieben 10. April 2003 Geschrieben 10. April 2003 http://perl-seiten.bei.t-online.de/perl/perl_ref.html das könnte dir helfen, ansonsten einfach wieder melden. mfg korea1 Zitieren
Guybrush Threepwood Geschrieben 10. April 2003 Autor Geschrieben 10. April 2003 Danke schonmal, ich hab aber tatsächlich noch ein Problem:rolleyes: BSP: $test= "Hallo!"; funk(\$test); sub($ref) { print $ref; } So müsste es doch gehen, oder? Es wird nämlich nichts ausgegeben. Zitieren
korea1 Geschrieben 10. April 2003 Geschrieben 10. April 2003 müsstest du deine variable nicht wieder dereferenzieren? siehe beispiel aus dem link: Um von einer Referenz wieder zurück zur referenzierten Variablen zu kommen ("Dereferenzierung"), stellt man der Referenz das Symbol voran, das dem Typ des referenzierten Objekts entspricht. $nr = 42; $ref_nr = \$nr; $deref_nr = $$ref_nr; $test = "Hallo"; $ref_test = \$test; $de_ref_test = $$ref_test; dann müsste es funktionieren, oder? mfg Zitieren
Guybrush Threepwood Geschrieben 10. April 2003 Autor Geschrieben 10. April 2003 Also das geht: $test = "Hallo!"; $r = \$test; print $$r; das aber nicht: $test = "Hallo!"; funk(\$test); sub funk($ref) { print $$ref; } :confused: Zitieren
korea1 Geschrieben 10. April 2003 Geschrieben 10. April 2003 hi, $test = "Hallo!"; funk(\$test); sub funk($$ref) { print $$ref; } Zitieren
Guybrush Threepwood Geschrieben 10. April 2003 Autor Geschrieben 10. April 2003 Nö, auch nicht:( Zitieren
dr.disk Geschrieben 11. April 2003 Geschrieben 11. April 2003 Argumente an Funktionen können nicht 'direkt' übergeben werden - Du mußt Sie mit shift Dir erst noch holen... $test = 'Hallo'; printRef(\$test); sub printRef { $ref = shift; print $$ref; } Zitieren
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.