fml8 チュートリアル (バージョン 7.99.1-20180910)
Prev | Chapter 57. Mail::Message::Encode クラス | Next

# ユーティリティ run_in_chcode()

言語依存処理の過程では、プログラムの扱いやすい文字コードに変換し、 処理を行なう関数が多数存在します。 そこで、そういった処理のための下請け関数を用意すると便利です。

run_in_chcode() は、 関数 $proc を実行します。 引数は、あらかじめ指定された文字コードに変換後、 関数 $proc に渡されるという仕様です。

    sub run_in_code
    {
        my ($self, $proc, $s, $args, $out_code, $in_code) = @_;
        my $proc_status = undef;

        my $obj         = new Mail::Message::Encode;
        my $conv_status = $obj->convert_str_ref(\$s, $out_code, $in_code);

        # XXX-TODO: validate $proc name regexp.
        eval q{
            $proc_status = &$proc($s, $args);
        };

        # XXX-TODO: correct ?
        if ($conv_status && $out_code) {
            $obj->convert_str_ref($s, $out_code, $in_code);
        }

        return wantarray ? ($conv_status, $proc_status): $conv_status;
    }

これは、次のように動作します。

    $s は EUC-JP へ変換。
    $proc($s, $args); を実行
    $proc の実行結果を返す。

Prev | Home | Next
Mail::Message::Encode の仕様の粗筋 | Up | 例題: 新しいプログラムを作る

fml 8.0 (fml-devel) project homepage is www.fml.org/software/fml8/.
fml 4.0 project homepage is www.fml.org/software/fml4/.
about one floppy bsd routers, see www.bsdrouter.org/.
other free softwares are found at www.fml.org/software/.

author's homepage is www.fml.org/home/fukachan/.
Also, visit nuinui's world :) at www.nuinui.net.

For questions about FML, e-mail <fml-bugs@fml.org>.