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
- Host: GitHub
- URL: https://github.com/dnmfarrell/uri-encode-xs
- Owner: dnmfarrell
- License: other
- Created: 2016-06-07T20:21:22.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2022-01-05T01:06:09.000Z (over 4 years ago)
- Last Synced: 2025-01-16T16:49:17.519Z (over 1 year ago)
- Language: XS
- Size: 88.9 KB
- Stars: 2
- Watchers: 4
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.pod
- License: LICENSE
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