If you want your code to play nice with others, you should definitely:
When constructing URL strings:
Use only \w+ for parameter names
uri-escape (see URI::Escape) the parameter values
When parsing URL strings:
Just use CGI.pm's param functionality. Or, for an extra buffer, use CGI::Safe.
The only "&" characters in your URL should be explicitly put there by you (or code that constructs the URL for you) as separators -- generally, all metacharacters, whitespace, etc. will be URI-escaped into %xy hex values.