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