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.
In Section
Seekers of Perl Wisdom