・エンコード
sub base64_encode ($) {
my($n,$str) = ("\x0D\x0A",pack 'u',$_[0]);
my $pad = 3 - (length($_[0]) % 3);
$str =~ s/^.//mgo and $str =~ s/[$n]+//go;
$str =~ tr@`!-_@A-Za-z0-9+/@;
$pad % 3 and substr $str,0 - $pad,$pad,'=' x $pad;
return do { $str =~ s/(.{76})/$1$n/go; $str.$n; };
}
・デコード
sub base64_decode ($) {
my $str = shift;
$str =~ tr@A-Za-z0-9+/@@cd;
$str =~ tr@A-Za-z0-9+/@`!-_@;
return join '',map { unpack 'u',pack('c',32 + 0.75 *
length($_)).$_ } $str =~ /.{1,84}/go;
}
デコードの方法はどのマニュアルか忘れましたが、Perldocで紹介されています。
0 件のコメント:
コメントを投稿