NAME

Convert::BaseN - encoding and decoding of base{2,4,8,16,32,64} strings

VERSION

$Id: BaseN.pm,v 0.1 2008/06/16 17:34:27 dankogai Exp dankogai $

SYNOPSIS

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);

EXPORT

Nothing. Instead of that, this module builds transcoder object for you and you use its decode and encode methods to get the job done.

FUNCTIONS

new

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.

decode

Does decode

my $decoded = $cb->decode($data)

encode

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);

SEE ALSO

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

AUTHOR

Dan Kogai, <dankogai at dan.co.jp>

BUGS

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.

SUPPORT

You can find documentation for this module with the perldoc command.

perldoc Convert::BaseN

You can also look for information at:

ACKNOWLEDGEMENTS

N/A

COPYRIGHT & LICENSE

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.