Füllen eines Hashes mit Variablen

GH@NDI

Erfahrenes Mitglied
Nabend!

Also mein Problem ist folgendes:
nehmen wir an wir bekommen gewisse daten im format

Code:
"feldname1=wert1&feldname2=wert2&feldname3=wert3"

über ein abgeschicktes formular rein.

jetzt definieren wir das in $string und splitten wir diese informationen beim &-zeichen in eine liste auf

Code:
@input = split(/&/, $string);

jetzt wird der hash formulardaten erstellt

Code:
%formulardaten;

jetzt möchte ich diesen hash so auffüllen das die namen immer dem feldnamen aus dem formular und der wert dem im feld eingegeben wert entspricht. meine lösung sah so aus:

Code:
foreach(@input) {
($var1, $var2) = split(/=/, $_);
$formulardaten{'$var1'} = "$var2";
}

allerdings hatte ich damit kein glück. ich habe es dann auch einmal über einen anderen weg versucht dem hash werte zuzuordnen

Code:
%formulardaten = { $var1 => $var2 };

aber auch damit hatte ich keinen erfolg.

ich weis jetzt einfach nimmer woran es liegt bzw. zweifle ich langsam daran ob das überhaupt so mit perl möglich ist. falls mir jemand folgen konnte und weis was ich falsch mache bzw. wie ich es machen müsste dann soll er sich doch erbarmen und einem verzweifeltem script kiddie ein wenig auf die sprünge helfen! ;)

Mit bestem Dank im vorraus,
CYA ALL SOMEWHERE OUT THERE
GH@NDI
 
spät aber doch

hi GH@NDI

tut mir leid daß die antwort erst jetzt kommt
aber ich bin selten auf dem board :)

dein fehler ist leider sehr sehr sehr simpel.

alles was du tun musst ist diesen Code:
Code:
foreach(@input) {
($var1, $var2) = split(/=/, $_);
$formulardaten{'$var1'} = "$var2";
}

durch diesen:
Code:
foreach(@input) {
($var1, $var2) = split(/=/, $_);
$formulardaten{$var1} = $var2; 
}

zu ersetzen. siehst du den unterschied??
die werte und schlüssel kannst du danach damit ueberpruefen:

Code:
while(@array=each(%formulardaten))
{
 print "Wert: $array[0]    ";
 print "Schluessel: $array[1]\n";
}

hoffe geholfen zu haben
mfg barney
 

Neue Beiträge

Zurück