MIME::Base64 Ver.2.12

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($str, [$eol])
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 スイッチ付きで起動していた場合表示される 場合がある。

Premature end of base64 data
デコードする文字列が4の倍数ではない。正しいbase64データは1つまたは2つの ``=''文字で長さが4の整数倍になるように調整すべきである。デコードの結果は、 埋め込み文字がそこに存在するような形で行なわれる。

Premature padding of base64 data
'=' 埋め込み文字が始めまたは2番目のbase64の quartletに現れた。


もしも大きなファイルをエンコードしたいならば、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)


ホーム Perlの小技

ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。