| Badger documentation | Contained in the Badger distribution. |
Badger::Codec::URI - URI encode/decode
use Badger::Codec::URI;
my $codec = Badger::Codec::URI->new();
my $encoded = $codec->encode("Hello World!");
my $decoded = $codec->decode($encoded);
This module implements a subclass of Badger::Codec for URI encoding and decoding.
This function URI-encodes the $data passed as an argument.
This function URI-decodes the $data passed as an argument.
This method URI-encodes the data referenced by the first argument. It delegates to the encode_uri() function.
$encoded = Badger::Codec::URI->encode($data);
This method decodes the encoded data passed as the first argument. It delegates to the decode_uri() function.
$decoded = Badger::Codec::URI->decode($encoded);
This method returns a reference to the encode_uri() function.
This method returns a reference to the decode_uri() function.
Andy Wardley http://wardley.org/
Copyright (C) 2008-2009 Andy Wardley. All rights reserved.
| Badger documentation | Contained in the Badger distribution. |
#======================================================================== # # Badger::Codec::URI # # DESCRIPTION # Codec module for URI encoding/decoding # # AUTHOR # Andy Wardley <abw@wardley.org> # #======================================================================== package Badger::Codec::URI; use Badger::Class version => 0.01, base => 'Badger::Codec'; # cache of escaped characters our $URI_ESCAPES; sub encode_uri { my $uri = shift; utf8::encode($uri) if $] >= 5.008; $URI_ESCAPES ||= { map { ( chr($_), sprintf("%%%02X", $_) ) } (0..255) }; $uri =~ s/([^A-Za-z0-9\-_.!~*'()])/$URI_ESCAPES->{$1}/eg; $uri; } sub decode_uri { my $uri = shift; $uri =~ tr/+/ /; $uri =~ s/%([0-9a-fA-F]{2})/pack("c", hex($1))/ge; $uri; } sub encode { shift; goto &encode_uri; } sub decode { shift; goto &decode_uri; } sub encoder { \&encode_uri; } sub decoder { \&decode_uri; } 1; __END__
# Local Variables: # mode: Perl # perl-indent-level: 4 # indent-tabs-mode: nil # End: # # vim: expandtab shiftwidth=4: