Hast Du Dich darum gekümmert, dass keine ";" innerhalb der einzelnen Felder vorkommen können? Falls ja, hast Du offenbar die Dekodierung vergessen; falls nicht, hast Du ein Problem.
Schon mal einen Namen gesehen der ein Semikolon enthält? :)
Vielleicht werden ja auch einfach alle schon bei der Eingabe entfernt, ohne dass sie irgendwie kodiert werden... Ich weiß es nicht.
Was mich jedenfalls interessieren würde, wo hat Peter denn seinen Fehler gemacht?
unless ($email eq "") { ... }
Sollte (zumindest mal auf den ersten Blick) die bedingte Anweisung dann ausführen, wenn in $email nicht nichts steht. Also so wie
if ($email ne '') { ... }
Oder liegt sein Fehler schon darin, dass in E-Mail etwas drinsteht, auch wenn er es nicht erwartet?
Gruß,
Stefan