by oota( oota@itp.nec.co.jp )(2001/11/16)
MIME::Base64モジュールの翻訳です。
なおこのドキュメントはCPAN上で検索できる HTML::Tableモジュールの説明を日本語に訳そうとしたものです。わかりにくい部分は本物を見てください。
原本の著作権はGisle Aas氏がお持ちです。
Gisle Aasさんにはメールで了解をいただきました。なお内容等が間違っていたら修正します。ご連絡ください。
MIME::Base64 - base64 文字列のエンコードとデコード
use MIME::Base64;
$encoded = encode_base64('Aladdin:open sesame');
$decoded = decode_base64($encoded);
このモジュールは RFC 2045 -MIME (Multipurpose Internet Mail Extensions) 中で定義されている Base64 エンコード方式 への文字列のエンコードとデコードを 行なう関数を提供するモジュールである。Base64エンコード方式は人間が可読でない フォーム中の任意のオクテット列を表現するのにデザインされている。65文字の US-ASCIIのサブセット([A-Za-z0-9+/=])が使われ、1つの表示可能な文字に6ビット が割り当てられる。
以下の関数が提供されている。
encode_base64() 関数を呼び出す事によってデータをエンコードする。最初の
引数は、エンコードされる文字列である。2番目の引数はシーケンスを終了する
時に使われる文字である(これはオプションであり、 "\n"が既定値である)。
返されるエンコードされた文字列は76文字を越えないように分割され、なくなる
まで $eol で終る。もしもエンコードされた文字列を複数の行に分割したくない
場合は、2番目の引数として空白の文字列を渡す。
decode_base64($str)decode_base64() 関数を呼び出す事によってデータをデコードする。この関数は、
デコード対象の単独の引数をとり、デコードしたデータを返す。
65文字のbase64サブセットの中にない任意の文字は単に無視される。'=' の後の 埋め込み文字はけっしてデコードされない。
もしも、デコード対象の文字列の長さ(base64文字以外を無視した後)が4の整数倍
になっていないか、埋め込み文字が予定より早く見付かったならば、perl が
-w で動作しているならば、警告が表示される。
もしも、これらのルーチンをあなたの名前空間にimportするのを好まないならば、 以下のように呼び出さなければならない。
use MIME::Base64 ();
$encoded = MIME::Base64::encode($decoded);
$decoded = MIME::Base64::decode($encoded);
以下の警告はもしもperl を -w スイッチ付きで起動していた場合表示される
場合がある。
もしも大きなファイルをエンコードしたいならば、57バイト単位に分割した 固まりでエンコードすべきである。これはbase64の行を中間で埋め込み作業を しなくてすみ、安全にする。57バイトのデータは1行の完全なbase64行(76 == 57*4/3)になる。
use MIME::Base64 qw(encode_base64);
open(FILE, "/var/log/wtmp") or die "$!";
while (read(FILE, $buf, 60*57)) {
print encode_base64($buf);
}
または、もしも十分なメモリがあれば、以下でも良い。
use MIME::Base64 qw(encode_base64); local($/) = undef; # slurp print encode_base64(<STDIN>);
コマンド行かrの同じアプローチは以下の通りである。
perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)' <file
もしもすべての行が base64 文字で4の整数倍ならば、デコードは slurpモード を必要としない。
perl -MMIME::Base64 -ne 'print decode_base64($_)' <file
Copyright 1995-1999, 2001 Gisle Aas.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Distantly based on LWP::Base64 written by Martijn Koster <m.koster@nexor.co.uk> and Joerg Reichelt <j.reichelt@nexor.co.uk> and code posted to comp.lang.perl <3pd2lp$6gf@wsinti07.win.tue.nl> by Hans Mulder <hansm@wsinti07.win.tue.nl>
The XS implementation use code from metamail. Copyright 1991 Bell Communications Research, Inc. (Bellcore)
ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。