GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
URI::Encode::XS(3) User Contributed Perl Documentation URI::Encode::XS(3)

URI::Encode::XS - a Perl URI encoder/decoder using C

  use URI::Encode::XS qw/uri_encode uri_encode_utf8 uri_decode uri_decode_utf8/;

  my $encoded = uri_encode($data);
  my $decoded = uri_decode($encoded);

  # utf8 friendly
  my $encoded = uri_encode_utf8($data);
  my $decoded = uri_decode_utf8($encoded);

This is a Perl URI encoder/decoder written in XS based on RFC3986 <https://tools.ietf.org/html/rfc3986>. This module always encodes characters that are not unreserved. When decoding, invalid escape sequences are preserved, e.g:

  uri_decode("foo%20bar%a/"); # foo bar%a/
  uri_decode("foo%20bar%a");  # foo bar%a
  uri_decode("foo%20bar%");   # foo bar%

As of version 0.10, the "bench" script shows it to be significantly faster than "URI::Escape":

                   Rate      escape encode_utf8      encode
  escape       140114/s          --        -94%        -98%
  encode_utf8 2255100/s       1509%          --        -71%
  encode      7735189/s       5421%        243%          --

                   Rate    unescape decode_utf8      decode
  unescape     188714/s          --        -95%        -97%
  decode_utf8 3744638/s       1884%          --        -50%
  decode      7429263/s       3837%         98%          --

However this is just one string - the fewer encoded/decoded characters are in the string, the closer the benchmark is likely to be (see "bench" for details of the benchmark). Different hardware will yield different results.

Another fast encoder/decoder which supports custom escape lists, is URI::XSEscape <https://metacpan.org/pod/URI::XSEscape>.

  $ cpan URI::Encode::XS

Or

  $ git clone https://github.com/dnmfarrell/URI-Encode-XS
  $ cd URI-Encode-XS
  $ perl Makefile.PL
  $ make
  $ make test
  $ make install

  • Aristotle Pagaltzis <https://github.com/ap>
  • Christian Hansen <https://github.com/chansen>
  • Jesse DuMond <https://github.com/JesseCanary>

  • URI::Escape <https://metacpan.org/pod/URI::Escape>
  • URI::XSEscape <https://metacpan.org/pod/URI::XSEscape>
  • URL::Encode <https://metacpan.org/pod/URL::Encode>
  • My article about the story of this module: The road to a 55x speedup with XS <http://perltricks.com/article/the-road-to-a-55x-speedup-with-xs/>

<https://github.com/dnmfarrell/URI-Encode-XS>

See LICENSE

© 2016 David Farrell
2017-08-18 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.