# Füllen eines Hashes mit Variablen



## GH@NDI (23. März 2002)

Nabend!

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


```
"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


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

jetzt wird der hash formulardaten erstellt


```
%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:


```
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


```
%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


----------



## barney (25. März 2002)

*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:

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

durch diesen:

```
foreach(@input) {
($var1, $var2) = split(/=/, $_);
$formulardaten{$var1} = $var2; 
}
```

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


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

hoffe geholfen zu haben
mfg barney


----------

