XSコードはふつうPerlコードよりも多機能で高速ですが,書くのが難しいため敷居が高いことも事実です。また,いちいちコンパイルしなければならないのも煩わしい点です。 ところで,Perlにはクロージャという仕組みがあり,動的にコードを生成することができます。したがって,XSでクロージャに等しいことを実現できれば,XSコードの煩わしさを避けつつXSの利益を享受することができます。 なお,この文書はXSによるコード例を解説していますが,XSそのものについては解説しません。 XSについてはperlxstutやperlxs,perlapiを参照してください。 クロージャの分析 まず,Perlのクロージャを分析します。Perlのクロージャは以下のようなものです。 sub make_accessor{ my($name) = @_; return sub{ $_[0]->{$name} }; } my