Convert::BaseN - encoding and decoding of base{2,4,8,16,32,64} strings
$Id: BaseN.pm,v 0.1 2008/06/16 17:34:27 dankogai Exp dankogai $
use Convert::BaseN;
# by name
my $cb = Convert::BaseN->new('base64');
my $cb = Convert::BaseN->new( name => 'base64' );
# or base
my $cb = Convert::BaseN->new( base => 64 );
my $cb_url = Convert::BaseN->new(
base => 64,
chars => '0-9A-Za-z\-_='
);
# encode and decode
$encoded = $cb->encode($data);
$decoded = $cb->decode($encoded);
Nothing. Instead of that, this module builds
transcoder object for you
and you use its "decode" and "encode" methods to get the
job done.
Create the transcoder object.
# by name
my $cb = Convert::BaseN->new('base64');
my $cb = Convert::BaseN->new( name => 'base64' );
# or base
my $cb = Convert::BaseN->new( base => 64 );
my $cb_url = Convert::BaseN->new(
base => 64,
chars => '0-9A-Za-z\-_='
);
You can pick the decoder by name or create your own by specifying base and
character map.
- base
- Must be 2, 4, 16, 32 or 64.
- chars
- Specifiles the character map. The format is the same as
"tr".
# DNA is coded that way.
my $dna = Convert::BaseN->new( base => 4, chars => 'ACGT' );
- padding
- nopadding
- Specifies if padding (adding '=' or other chars) is
required when encoding. default is yes.
# url-safe Base64
my $b64url = Convert::BaseN->new(
base => 64, chars => '0-9A-Za-z\-_=', padding => 0;
);
- name
- When specified, the following pre-defined encodings will be
used.
- base2
- base 2 encoding. "perl" is
01110000011001010111001001101100.
- base4
- DNA
- RNA
- base 4 encodings. "perl" is:
base4: 1300121113021230
DNA: CTAACGCCCTAGCGTA
RNA: GAUUGCGGGAUCGCAU
base 16 encoding. "perl" is "7065726c".
- base32
- base32hex
- base 32 encoding mentioned in RFC4648. "perl" is:
base32: OBSXE3A==
base32hex: E1IN4R0==
- base64
- base64_url
- base64_imap
- base64_ircu
- base 64 encoding, as in MIME::Base64. They differ only in
characters to represent number 62 and 63 as follows.
base64: +/
base64_url: -_
base64_imap: +,
base64_ircu: []
for all predefined base 64 variants, "decode" accept ANY form of
those.
Does decode
my $decoded = $cb->decode($data)
Does encode.
# line folds every 76 octets, like MIME::Base64::encode
my $encoded = $cb->encode($data);
# no line folding (compatibile w/ MIME::Base64)
my $encoded = $cb->encode($data, "");
# line folding by CRLF, every 40 octets
my $encoded = $cb->encode($data, "\r\n", 40);
RFC4648 <
http://tools.ietf.org/html/rfc4648>
Wikipedia <
http://en.wikipedia.org/wiki/Base64>
<
http://www.centricorp.com/papers/base64.htm>
MIME::Base64
MIME::Base32
MIME::Base64::URLSafe
Dan Kogai, "<dankogai at dan.co.jp>"
Please report any bugs or feature requests to "bug-convert-basen at
rt.cpan.org", or through the web interface at
<
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Convert-BaseN>. I will
be notified, and then you'll automatically be notified of progress on your bug
as I make changes.
You can find documentation for this module with the perldoc command.
perldoc Convert::BaseN
You can also look for information at:
- •
- RT: CPAN's request tracker
<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Convert-BaseN>
- •
- AnnoCPAN: Annotated CPAN documentation
<http://annocpan.org/dist/Convert-BaseN>
- •
- CPAN Ratings
<http://cpanratings.perl.org/d/Convert-BaseN>
- •
- Search CPAN
<http://search.cpan.org/dist/Convert-BaseN>
N/A
Copyright 2008 Dan Kogai, all rights reserved.
This program is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.