Perl

2009-02-25

PerlでBonanza



一ヶ月程前から作ってる安南将棋のインターフェイス使って、web上でBonanzaと対局できるのではと思い付いた。それについてはまた別に書きたいと思う。


さて何にしても、Bonanzaをコントロールできないといけない。Perlでやってみる。


入出力をパイプで繋いで、コマンドをBonanzaに送って、出力から指し手を読み取ればいいから簡単。と思っていたがかなり苦戦。


まず、入出力ともにパイプで繋ぐのでIPC::open2を使ってみた。


open2(\*BRD,\*BWR,"./bonanza");で開いて単純にprint BWR "[Command]\n";でコマンド送って<BRD>で読み取ってみるけど上手くいかない。


こちらがコマンド送ってもすぐに結果が返ってくる訳ではない上に、先読み(ponder on)状態だと出力は常にやってくる。いろいろ試してみるけどどうも駄目っぽい。さてどうする。


いろいろ調べて(このへんの情報はweb上にも少ないね…)なんとかExpect.pmにたどり着く。


ftpやrloginにつなぐサンプルを参考に適当に書いてみる。なんかあっさりと上手くいく。Expect.pmの詳しい使い方はまだよくわかっていないが、これでいけそうだ。


| | コメント (0) | トラックバック (0)