An open API service indexing awesome lists of open source software.

https://github.com/dnmfarrell/uri-encode-xs

A C based URI encoder decoder for Perl
https://github.com/dnmfarrell/uri-encode-xs

Last synced: 6 months ago
JSON representation

A C based URI encoder decoder for Perl

Awesome Lists containing this project

README

          

=head1 NAME

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

=head1 SYNOPSIS

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

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

=head1 DESCRIPTION

This is a Perl URI encoder/decoder written in XS based on L.
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.09, the C script shows it to be significantly faster
than C:

Rate escape encode
escape 144165/s -- -98%
encode 8239785/s 5616% --
Rate unescape decode
unescape 196870/s -- -97%
decode 6051468/s 2974% --

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

Another fast encoder/decoder which supports custom escape lists, is
L.

=head1 INSTALLATION

$ 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

=head1 CONTRIBUTORS

=over 4

=item * L

=item * L

=item * L

=back

=head1 SEE ALSO

=over 4

=item * L

=item * L

=item * L

=item * My article about the story of this module: L

=back

=head1 REPOSITORY

L

=head1 LICENSE

See LICENSE

=head1 AUTHOR

E 2016 David Farrell

=cut