HTTP-AnyUA
view release on metacpan or search on metacpan
lib/HTTP/AnyUA/Util.pm view on Meta::CPAN
# URI escaping adapted from URI::Escape
# c.f. http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1
# perl 5.6 ready UTF-8 encoding adapted from JSON::PP
# adapted from HTTP/Tiny.pm
my %escapes = map { chr($_) => sprintf('%%%02X', $_) } 0..255;
$escapes{' '} = '+';
my $unsafe_char = qr/[^A-Za-z0-9\-\._~]/;
sub uri_escape {
my $str = shift or _usage(q{uri_escape($str)});
if ($] ge '5.008') {
utf8::encode($str);
}
else {
$str = pack('U*', unpack('C*', $str)) # UTF-8 encode a byte string
if (length $str == do { use bytes; length $str });
$str = pack('C*', unpack('C*', $str)); # clear UTF-8 flag
}
$str =~ s/($unsafe_char)/$escapes{$1}/ge;
return $str;
}
( run in 0.233 second using v1.01-cache-2.11-cpan-cc502c75498 )