(This is not really a review, rather a response to Eamons review.)
What's the advantage over URI::Escape? The fact that it accepts hashes. So that you do not have to loop through the hash yourself and (as you seem to suggest) fail to escape the data properly. You seem to want to merge all the data separated by =s and &s and then run the uri_escape() for the whole string you build. THAT IS WRONG! What if any of the values contains a &?!?
Also, any value of the hash may be an arrayref, in which case you end up with foo=firstvalue&foo=secondvalue&foo=thirdvalue&... This firther adds to the complexity if you wanted to implement it yourself.
I don't see what advantage this module has over URI::Escape, other than accepting hashes. URI::Escape's uri_escape function will skip over '=' and '&' like this module's enURL if called like so: