in reply to Encoding spaces in CGI form data

That's what the CGI::unescape function for:

use CGI; print CGI::unescape("hello+ferran%21"), $/; __END__
prints
hello, ferran!