[kansaipm] 暗黙のuse utf8

Yasushi Nakajima nakajima at netstock.co.jp
Sun Oct 5 04:48:37 CDT 2003


 ちょうど弾さんが顔を出して下さったので、弾さん向けの(^^)質問を一つ。

 以下、Perl5.8(テストはWindows上の5.8.0でやってます)での話。

 いま、PDFJのXMLフロントエンドであるXPDFJが、ようやくリリースに近づいて
きたのですが、その中で「明示的にuse utf8;していないコードをeval(正確に
はSafe::reval)するときに、暗黙にuse utf8;されることがある」という事態に
突き当たって悩んでいます。どうもutf8::SWASHNEWなんかを呼んでいるようです。

 まだ、どんな時に起きるのか、短い再現コードにまで追いつめられていないの
ですが、実行するコードを少し変えただけで起きたり起きなかったりです。

 安全のためにSafe環境はpermit_only(':default')にして、その中で実行した
いのですが、そうするとrequireがダメなので、上記の現象が起こると当然エラー
になります。実行したいコード自体は、変数を使った数式の評価ができればよく、
外部とやりとりする機能は殺しておきたいので、requireを許可したくはありま
せん。

 質問は、いったいどんな条件の時に上記の現象が起こるのか、抑止する方法が
あるのかどうか、です。

 書き忘れましたが、実行するコードはXMLデータ中に埋め込まれていて、
XML::Parserで読み込んでいるので、utf8になった状態でrevalに渡されています。

-- 
Yasushi Nakajima <nakajima at netstock.co.jp>




More information about the Kansai-pm mailing list