PerlのC APIにはMagicという考え方があって,任意のSVにフックとプライベートデータを付けることができる。このAPIはXSからでも利用できるのだが,難しそうで敬遠していた。しかし,試してみると意外と簡単に使えることが分かったのでメモしておく WeakRef::Auto http://search.cpan.org/dist/WeakRef-Auto/ 使い方は意外と簡単で,フックしたい操作のためのメソッドを入れたVirtual Tableを用意して,sv_magicext()を呼び出すだけ。 まずVirtual Tableと識別のためのユーティリティをCセクションに置く: #define PERL_NO_GET_CONTEXT #include "EXTERN.h" #include "perl.h" #include "XSUB.h" typedef SV* SVREF; st