NAME

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

VERSION

$Id: README,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:    -
          base64imap:   +,
          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.