PerlのBase64エンコードの改行について
PerlでMIME::Base64モジュールを使ってBase64エンコードを行うと、デフォルトで76文字ごとに改行コード(\n)が入る。
use MIME::Base64;
$base64_data = encode_base64($file_data);
この改行の挿入は、RFC 2045 (MIME Part One)の仕様に従っているため。
この仕様では、Base64エンコードされたデータは76文字ごとに改行を入れることが推奨されている。
これは、古いメールクライアントでも問題なく表示できるようにするための対策。
改行が入らないようにするには、encode_base64関数の第二引数を指定して空にすることで改行を取り除ける。
$base64_data = encode_base64($file_data, "");
あまり需要はないかもしれないが、指定文字数で改行を入れるにはこうする。
#改行を取る
$base64_data = encode_base64($file_data, "");
#60行ごとに改行入れる
$base64_data =~ s/(.{60})/$1\n/g;