<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">package MIME::Base32;

use 5.008001;
use strict;
use warnings;

require Exporter;
our @ISA       = qw(Exporter);
our @EXPORT    = qw(encode_base32 decode_base32);
our @EXPORT_OK = qw(
    encode_rfc3548 decode_rfc3548 encode_09AV decode_09AV
    encode_base32hex decode_base32hex
);

our $VERSION = "1.303";
$VERSION = eval $VERSION;

sub encode         { return encode_base32(@_) }
sub encode_rfc3548 { return encode_base32(@_) }

sub encode_base32 {
    my $arg = shift;
    return '' unless defined($arg);    # mimic MIME::Base64

    $arg = unpack('B*', $arg);
    $arg =~ s/(.....)/000$1/g;
    my $l = length($arg);
    if ($l &amp; 7) {
        my $e = substr($arg, $l &amp; ~7);
        $arg = substr($arg, 0, $l &amp; ~7);
        $arg .= "000$e" . '0' x (5 - length $e);
    }
    $arg = pack('B*', $arg);
    $arg =~ tr|\0-\37|A-Z2-7|;
    return $arg;
}

sub decode         { return decode_base32(@_) }
sub decode_rfc3548 { return decode_base32(@_) }

sub decode_base32 {
    my $arg = uc(shift || '');    # mimic MIME::Base64

    $arg =~ tr|A-Z2-7|\0-\37|;
    $arg = unpack('B*', $arg);
    $arg =~ s/000(.....)/$1/g;
    my $l = length $arg;
    $arg = substr($arg, 0, $l &amp; ~7) if $l &amp; 7;
    $arg = pack('B*', $arg);
    return $arg;
}

sub encode_09AV { return encode_base32hex(@_) }

sub encode_base32hex {
    my $arg = shift;
    return '' unless defined($arg);    # mimic MIME::Base64

    $arg = unpack('B*', $arg);
    $arg =~ s/(.....)/000$1/g;
    my $l = length($arg);
    if ($l &amp; 7) {
        my $e = substr($arg, $l &amp; ~7);
        $arg = substr($arg, 0, $l &amp; ~7);
        $arg .= "000$e" . '0' x (5 - length $e);
    }
    $arg = pack('B*', $arg);
    $arg =~ tr|\0-\37|0-9A-V|;
    return $arg;
}

sub decode_09AV { return decode_base32hex(@_) }

sub decode_base32hex {
    my $arg = uc(shift || '');    # mimic MIME::Base64

    $arg =~ tr|0-9A-V|\0-\37|;
    $arg = unpack('B*', $arg);
    $arg =~ s/000(.....)/$1/g;
    my $l = length($arg);
    $arg = substr($arg, 0, $l &amp; ~7) if $l &amp; 7;
    $arg = pack('B*', $arg);
    return $arg;
}

1;

=encoding utf8

=head1 NAME

MIME::Base32 - Base32 encoder and decoder

=head1 SYNOPSIS

    #!/usr/bin/env perl
    use strict;
    use warnings;
    use MIME::Base32;

    my $encoded = encode_base32('Aladdin: open sesame');
    my $decoded = decode_base32($encoded);

=head1 DESCRIPTION

This module is for encoding/decoding data much the way that L&lt;MIME::Base64&gt; does.

Prior to version 1.0, L&lt;MIME::Base32&gt; used the C&lt;base32hex&gt; (or C&lt;[0-9A-V]&gt;) encoding and
decoding methods by default. If you need to maintain that behavior, please call
C&lt;encode_base32hex&gt; or C&lt;decode_base32hex&gt; functions directly.

Now, in accordance with L&lt;RFC-3548, Section 5|https://tools.ietf.org/html/rfc3548#section-5&gt;,
L&lt;MIME::Base32&gt; uses the C&lt;encode_base32&gt; and C&lt;decode_base32&gt; functions by default.

=head1 FUNCTIONS

The following primary functions are provided:

=head2 decode

Synonym for C&lt;decode_base32&gt;

=head2 decode_rfc3548

Synonym for C&lt;decode_base32&gt;

=head2 decode_base32

    my $string = decode_base32($encoded_data);

Decode some encoded data back into a string of text or binary data.

=head2 decode_09AV

Synonym for C&lt;decode_base32hex&gt;

=head2 decode_base32hex

    my $string_or_binary_data = MIME::Base32::decode_base32hex($encoded_data);

Decode some encoded data back into a string of text or binary data.

=head2 encode

Synonym for C&lt;encode_base32&gt;

=head2 encode_rfc3548

Synonym for C&lt;encode_base32&gt;

=head2 encode_base32

    my $encoded = encode_base32("some string");

Encode a string of text or binary data.

=head2 encode_09AV

Synonym for C&lt;encode_base32hex&gt;

=head2 encode_base32hex

    my $encoded = MIME::Base32::encode_base32hex("some string");

Encode a string of text or binary data. This uses the C&lt;hex&gt; (or C&lt;[0-9A-V]&gt;) method.

=head1 AUTHORS

Jens Rehsack - &lt;rehsack@cpan.org&gt; - Current maintainer

Chase Whitener

Daniel Peder - sponsored by Infoset s.r.o., Czech Republic
 - &lt;Daniel.Peder@InfoSet.COM&gt; http://www.infoset.com - Original author

=head1 BUGS

Before reporting any new issue, bug or alike, please check
L&lt;https://rt.cpan.org/Dist/Display.html?Queue=MIME-Base32&gt;,
L&lt;https://github.com/perl5-utils/MIME-Base32/issues&gt; or
L&lt;https://github.com/perl5-utils/MIME-Base32/pulls&gt;, respectively, whether
the issue is already reported.

Please report any bugs or feature requests to
C&lt;bug-mime-base32 at rt.cpan.org&gt;, or through the web interface at
L&lt;https://rt.cpan.org/NoAuth/ReportBug.html?Queue=MIME-Base32&gt;.
I will be notified, and then you'll automatically be notified of progress
on your bug as I make changes.

Any and all criticism, bug reports, enhancements, fixes, etc. are appreciated.

=head1 SUPPORT

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

    perldoc MIME::Base32

You can also look for information at:

=over 4

=item * RT: CPAN's request tracker

L&lt;https://rt.cpan.org/Dist/Display.html?Name=MIME-Base32&gt;

=item * AnnoCPAN: Annotated CPAN documentation

L&lt;http://annocpan.org/dist/MIME-Base32&gt;

=item * MetaCPAN

L&lt;https://metacpan.org/release/MIME-Base32&gt;

=back

=head1 COPYRIGHT AND LICENSE INFORMATION

Copyright (c) 2003-2010 Daniel Peder.  All rights reserved.
Copyright (c) 2015-2016 Chase Whitener.  All rights reserved.
Copyright (c) 2016 Jens Rehsack.  All rights reserved.

This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.

=head1 SEE ALSO

L&lt;MIME::Base64&gt;, L&lt;RFC-3548|https://tools.ietf.org/html/rfc3548#section-5&gt;

=cut
</pre></body></html>