in reply to Processing a multiple="multiple" <select>

There is nothing wrong with not using the CGI module, but it has done most of the work for you.

As far as your code, $payload =~ tr/+/ /; should really use a regex to detect multiple parameters, and an assignment to an array. It's going to take additional logic to handle the contents of your payload when the results are not a SCALAR type, as in multiple select results.