[kansaipm] Safe::Hole 0.09

Yasushi Nakajima nakajima at netstock.co.jp
Thu Jan 15 20:02:59 CST 2004


 ずいぶん久々に、Safe::Holeをバージョンアップしました。実際にやってくれ
たのはBrian McCauleyというイギリスの人ですけど。

 これまで何度か、Safe::Holeでwrapしたコードでrequireできないのかという
質問をいただいて、「それはできません。仕様です」と冷たく答えて来たのです
が、それができるようになりました。Thanks to Brian.

 Safeは二つの効果をもたらします。一つはパッケージのルートを切り替えて閉
じこめられたパッケージ内でコードを実行する。もう一つはOpcodeを使って特定
のオペコードをマスクした(エラーになる)状態でコードをコンパイル・実行す
る。これまでのSafe::Holeは前者については元のmain::に切り替える機能を提供
しますが、後者については関知せずSafeのマスクに従うのみでした。Safeのデフォ
ルトのマスクではrequireは許可されていないので、Safe::Holeを使ってもやは
りrequireはできなかったわけです。

 0.09では、Safe::HoleでwrapしたコードはSafe外のオリジナルのマスク(通常
はマスク無し)でコンパイル・実行されるようにできます。つまり、requireも
できるというわけです。(もちろん%INCと@INCも切り替えられます。)

 Safe::HoleはCPANと私のサイトにあります。

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




More information about the Kansai-pm mailing list