Slyh: Wie kann man zwei Variablen von einem Unterprogramm übernehmen??

Beitrag lesen

Hi,

foreach $feld (@formularfelder)
   {
     ($name, $daten) = split(/=/, $feld);
     $daten =~ s/+/ /go;
     $daten =~ s/%(..)/pack("C", hex($1))/eg;

@d[$i] = $daten;
     @c[$i] = $name;
     $i = $i + 1;

Wieso machst du nicht einfach "push(@d, $daten)". Damit sparst du dir die Laufvariable.

return (@d,@c);

»»  }

($aufdaten,$b)=&Datenaufbereitung($daten); # 2 Variablen!

Wenn ich keinen Denkfehler mache, gibst du aus der Funktion 2 Arrays zurück, schreibst diese aber in
Skalare. D.h. in $aufdaten steht das erste Element von @d und in $b das zweite Element von @d. Ich nehme
an, daß du @d im Unterprogramm in ein Array @aufdaten im Hauptprogramm speichern willst. Entsprechend
@c im Unterprogramm nach @b im Hauptprogramm. Das geht so leider nicht, da @aufdaten sämtliche
Array-Elemente "aufsaugt", die du mit return zurückgibst. In @aufdaten würden also sowohl die Elemente von
@d, als auch die Elemente von @c stehen. Direkt hintereinander. @b wäre leer.

Die Methode, die du zur Rückgabe der beiden Arrays verwenden willst, funktioniert so also leider nicht.
Aber eigentlich mußt du auch nicht die gesamten Arrays zurückgeben. Es reicht, wenn du Referenzen auf
beide Arrays zurückgibst. Anders als in anderen Programmiersprachen, bleiben die lokal angelegten Arrays
nämlich auch nach Beenden der Subroutine erhalten, solange eine Referenz existiert. Du kannst also im
Hauptprogramm "normal" darauf zugreifen und z.B. umkopieren.

Ich hoffe dir soweit geholfen zu haben. (und vor allem die gewollte Funktionsweise verstanden zu haben :-))

Gruß,
Slyh