[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .

Mail::Message::Encode の仕様(あらすじ)

本体はプライベートメソッド _convert_str_ref() にまとめてあります。

   sub convert # 引数 STR が変換対象
   {
	my ($self, $str, $out_code, $in_code) = @_;
	_convert_str_ref(\$str, $out, $in);

        return $str;
   }


   sub convert_str_ref # 引数 STR_REF が変換対象
   {
	my ($self, $str, $out, $in) = @_;
	_convert_str_ref($str, $out, $in);
   }


   sub _convert_str_ref # 引数 STR_REF が変換対象
   {
        my ($str, $out, $in) = @_;

        # 1. 推測
        もし $in がない → 推測 → 失敗 → 0 をかえす? 

        # 2. 変換をトライ
        if ($in がわかった or $in が指定された) {
                $out へ変換
                jcode, Jcode, Encode などのモジュールが変換をがんばる
                return 1 ; #成功
        }
        else { # principle of least surprise ?
                なにもしない# str を、そのまま返す
        }

        return 0 ; # 失敗
   }
sub base64 {}
sub quoted_printable {}
があるといいですかね?
$x = $encode->base64($s);
また、互換性というか便宜上、STR2XXX() も準備します。
   STR2EUC(  $str, [$icode] )
   STR2JIS(  $str, [$icode] )
   STR2SJIS( $str, [$icode] )
は convert_str_ref を wrap する関数です。

[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .
Copyright (C) 1993-2022 Ken'ichi Fukamachi mail:< fukachan at fml.org >