Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

LWP and URI escape

by johnnywang (Priest)
on Mar 02, 2007 at 23:05 UTC ( #602977=perlquestion: print w/ replies, xml ) Need Help??
johnnywang has asked for the wisdom of the Perl Monks concerning the following question:

Hi, I'm confused/puzzled by how LWP handles URI escapes vs. URI::Escape. Say I have a form parameter named "data" with value "12 34+56".
use strict; use URI::Escape: use LWP:Simple; my $res = get("http://www.foo.com?data=".uri_escape("12 34+56")); #sen +t as: data=12%2034%2B12, both space and "+" are escaped. my $res2 = get("http://www.foo.com?data=12 34+56")); # sent as: date=1 +2%2034+56, i.e. space is escaped, but "+" is not.
I was expecting get() to also escape "+" for me. After stepping through the code, I see that LWP::Simple::get() does call something like uri_escape:
# in URI::_init(C:/Perl/site/lib/URI.pm:76): $str =~ s/([^$uric\#])/$URI::Escape::escapes{$1}/go; # where $uric is: # \;\/\?\:\@\&\=\+\$\,\[\]A-Za-z0-9\-_\.\!\~\*\'\(\)%
where you can see "+" is not escaped, plus a few others. URI::Escape::uri_escape is implemented as:
$text =~ s/([^A-Za-z0-9\-_.!~*'()])/$escapes{$1}/g;
which would escape "+". My question is why URI::Escape is escaping more than what get() does (via URI::_init)? or why get() doesn't do the "appropriate" escaping? is the best practice to escape everything before sending to get() rather than relying on its escaping? how about UserAgent::post? will it escape its values completely? or am I missing something? Thanks.

Comment on LWP and URI escape
Select or Download Code
Re: LWP and URI escape
by Joost (Canon) on Mar 02, 2007 at 23:17 UTC

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://602977]
Approved by GrandFather
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (8)
As of 2014-09-23 22:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (241 votes), past polls