From 22993e72e082bf4c79bdcfa959f0f2a79aba427c Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Fri, 20 Jul 2007 16:32:17 +0200 Subject: [PATCH] CGI: Added url_param_escape() which writes spaces as "+". Use this function when genering self-ref URLs to save URL space. --- lib/perl/CGI.pm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/perl/CGI.pm b/lib/perl/CGI.pm index bb2b14b0..79db231b 100644 --- a/lib/perl/CGI.pm +++ b/lib/perl/CGI.pm @@ -17,17 +17,26 @@ BEGIN { our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); $VERSION = 1.0; @ISA = qw(Exporter); - @EXPORT = qw(&html_escape &url_escape &self_ref &self_form); + @EXPORT = qw(&html_escape &url_escape &url_param_escape &self_ref &self_form); @EXPORT_OK = qw(); %EXPORT_TAGS = (); } +### Escaping ### + sub url_escape($) { my $x = shift @_; $x =~ s/([^-\$_.!*'(),0-9A-Za-z\x80-\xff])/"%".unpack('H2',$1)/ge; return $x; } +sub url_param_escape($) { + my $x = shift @_; + $x = url_escape($x); + $x =~ s/%20/+/g; + return $x; +} + sub html_escape($) { my $x = shift @_; $x =~ s/&/&/g; @@ -155,7 +164,7 @@ sub make_out_args($) { sub self_ref(@) { my %h = @_; my $out = make_out_args(\%h); - return "?" . join(':', map { "$_=" . url_escape($out->{$_}) } sort keys %$out); + return "?" . join(':', map { "$_=" . url_param_escape($out->{$_}) } sort keys %$out); } sub self_form(@) { -- 2.39.2