Inline::JavaでCDKのニ次元構造立ち上げをperlでやれるようになったんだけど、やっぱuseして使いたいのでモジュール化してみた。
最初、Inlineでモジュールを書く方法の通りに書いてみたらエラーを吐いて動かないので、どうしたもんかと。
で、少し探してみたら、あまり深く考えなくて、普通にコンストラクタだけ用意してやればOKということらしい。
use 5.008008; use strict; use warnings; our $VERSION = '0.01'; use Inline Java => "DATA"; sub new { my $class = shift; return CDK::Simple::smi2mol->new(); } 1; __DATA__ __Java__ import java.io.StringWriter; import java.io.IOException; 後はjavaコードがジャヴァジャヴァと。
で、使ってみる。
my $parser = CDK::Simple->new; my $smiles_string = "C(=O)O"; print $parser->convert($smiles_string);
お~、モジュールだ。実行すると無駄にタメがあるのはjavaだから~。ところで、newでblessする必要はないのかな?とか気になる。
実際に作ってみて、Inline::Java使ったモジュールは意外に簡単だった。