Thread Allg. Frage zu Referenzen
(18 answers)
Opened by toppsino at 2008-04-12 17:15 Tr0Nix+2008-04-15 16:15:32-- Zweiteres ist kein Ersatz für Ersteres! Im zweiten Fall wird nämlich kein anonymer Hash zurückgegeben, sondern einfach eine Liste von abwechselnden Schlüsseln und Werten. Quote ask_person gibt nun eine Liste zurück, folglich werden alle Werte dieser Liste als Parameter an schreibe_an übergeben. Quote schreibe_an holt sich den ersten Parameter, was in Deinem Beispiel einfach der erste Schlüssel ist, den ask_person geliefert hat, und gibt eine Referenz auf diesen Skalar zurück. Quote Ja, weil man nicht wirklich mischen kann. Parameter und Rückgabewerte von Subroutinen sind immer Listen von Skalaren, niemals Arrays oder Hashes sondern höchstens Referenzen darauf. Du könntest Dein Beispiel aber so verändern, dass in ask_person tatsächlich ein anonymer Hash zurückgegeben wird (return { [...] }; statt return ( [...] );) und in schreibe_an dann nicht noch einmal eine Referenz auf die Referenz erzeugen. Oder Du könntest erst in schreibe_an den Hash erzeugen (my %dummy = @_; return \%dummy; statt my $dummy = shift; return \$dummy;). When C++ is your hammer, every problem looks like your thumb.
|