Convert-Base91

 view release on metacpan or  search on metacpan

lib/Convert/Base91.pm  view on Meta::CPAN


Convert::Base91 - XS base91 encoding/decoding

=head1 SYNOPSIS

  use Convert::Base91 qw/encode_base91 decode_base91/;

  # procedural interface
  my $encoded = encode_base91 'some data';
  say $encoded; # qrLg,W;Hr%w
  my $decoded = decode_base91 $encoded;
  say $decoded; # some data


  # OO interface
  my $base91 = Convert::Base91->new;
  $base91->encode('some ');
  $base91->encode('data');
  my $enc = $base91->encode_end;
  say $enc; # qrLg,W;Hr%w

  $base91->decode('qrLg,');

lib/Convert/Base91.pm  view on Meta::CPAN


=over

=item B<encode_base91> $binary_data

Takes a string containing arbitrary bytes and returns the
base91 encoded data.

=item B<decode_base91> $base91_data

Takes a string containing base91 encoded data and returns the decoded
string of arbitrary bytes. Any non-printable character in the input is
silently ignored.

=item Convert::Base91->B<new>

Create a new C<Convert::Base91> object to keep the state for a chunk
encoding/decoding operation.

=item $base91->B<encode>($data)

lib/Convert/Base91.pm  view on Meta::CPAN

nothing.

=item $base91->B<encode_end>

Signals that all chunks of data to be encoded have been submitted.
Returns the base91 encoded data, and clears the state of the $base91
object so it may be used again (for either encoding or decoding).

=item $base91->B<decode>($data)

Submit the next chunk of base91 data to be decoded. Returns nothing.
Any non-printable character in the input is silently ignored.

=item $base91->B<decode_end>

Signals that all chunks of data to be decoded have been submitted.
Returns the decoded data, and clears the state of the $base91 object
so it may be used again (for either encoding or decoding).

=back

=head1 SEE ALSO

L<http://base91.sourceforge.net/>

L<Convert::Ascii85> provides a constant-length encoding, at the cost
of a larger overhead (25% for Ascii85, versus 33% for base64 and

t/Convert-Base91.t  view on Meta::CPAN


my $base91 = Convert::Base91->new;
$base91->encode('Hello, ');
$base91->encode('World!');
$base91->encode("\n");
my $encoded = $base91->encode_end;
is $encoded, '>OwJh>}AQ;r@@Y?FF', 'OO encode';

$base91->decode('>OwJh>}AQ');
$base91->decode(';r@@Y?FF');
my $decoded = $base91->decode_end;
is $decoded, "Hello, World!\n", 'OO decode';

is $base91->decode_end, '', 'double decode_end';
is $base91->encode_end, '', 'encode_end without data';

is decode_base91(">\x00OwJh\x01>}A\xFE\xDDQ;r@\@Y?FF\x05"), "Hello, World!\n", 'decode with junk';



( run in 0.263 second using v1.01-cache-2.11-cpan-26ccb49234f )