#!perl
# Name: Test the base64 encoding function from the MIME::Base64 module
# Require: 5
# Desc:
#
sub encode_base64
{
my $res = "";
my $eol = $_[1];
$eol = "\n" unless defined $eol;
pos($_[0]) = 0; # ensure start at the beginning
while ($_[0] =~ /(.{1,45})/gs) {
$res .= substr(pack('u', $1), 1);
chop($res);
}
$res =~ tr|` -_|AA-Za-z0-9+/|; # `# help emacs
# fix padding at the end
my $padding = (3 - length($_[0]) % 3) % 3;
$res =~ s/.{$padding}$/'=' x $padding/e if $padding;
# break encoded string into lines of no more than 76 characters each
if (length $eol) {
$res =~ s/(.{1,76})/$1$eol/g;
}
$res;
}
$plain = "abcd" x 200;
require 'benchlib.pl';
&runtest(0.4, <<'ENDTEST');
$base64 = encode_base64($plain);
ENDTEST
#print $base64;