・エンコード
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 件のコメント:
コメントを投稿