When using perl it's best to let the script do the work. I'd take your form and get rid of the extra hidden values. If the script is failing it will most likely be a syntax error. In order to filter that out try letting perl do the job it was meant too
Next let perl handle all of the data.
Once your post information is good to post the information where you want it to go, perl will handle everything in between. Once the data matches on both forms they will work. character like @, if they aren't handled correctly will usually kick a syntax error, which is why we let perl handle them.