PerlからExpectのライブラリを利用するためにセットアップしてみました。
でも、全体の環境にインストールするのではなく、自分のプログラムだけで「こっそり」使用するため、makeを行わずに、ライブラリだけを置きました。
1.Perl-Expectの入手
CPANのWebサイトからダウンロードしました。
http://search.cpan.org/~rgiersig/Expect-1.21/
zipファイルがダウンロードできます。
2.zipの展開
zipファイルの中身はすべて"Expect-1.21"というディレクトリに入っています。展開した結果を適当な場所に置きます。どこかに展開してから、中身だけをPerlの環境設定で指定したlibのディレクトリに置けば簡単なのでしょうが、上記の目的のため、こういう置き方をしました。
~/lib/Expect-1.21/
3.Perlのソースで、このライブラリを使うことを宣言する
ソースコードの先頭部分で、このライブラリの場所と、Expectを使用することを宣言します。
#!/usr/local/bin/perl -w
use lib "/export/home/(ホームディレクトリ名)/lib/Expect-1.21";
use Expect;
4.トラブルシューティング
基本、これで動くようになったのですが、私の環境では1つだけ問題が起きました。
Expectのライブラリの中で、IO::Ptyというライブラリを使っていて、これのバージョンチェックをしているのですが、バージョン1.03以上でないと動かないらしく、ライブラリの関数を呼び出すときに「1.02しか入っていない!」とエラーになります。
Expext.pmのソースコードの22行目に定義がありました。
use IO::Pty 1.03; # We need make_slave_controlling_terminal()
とりあえず急いでいたので、数字だけ書き換えて使ってみちゃお、と思い、そこだけ編集しました。
use IO::Pty 1.02; # We need make_slave_controlling_terminal()
今のところこれで動いています。本番で使用する環境で、このままというわけにはいかないので、バージョンをチェックした上で、IOの方のバージョンを上げるか、Expectのバージョンを下げるかすることにします。
そうそう、そもそもの話なのですが、Expectというと、普通は独立したプログラミング環境のことを指していて、Solarisの場合なんかもインストールパッケージがあります。(さらにこのExpectはTcl/Tkという言語(?)でできているので、そちらをあらかじめインストールしないといけません。)
今回試してみたPerlのExpectは、基本的にはそれとは別のものです。
2009年5月27日水曜日
登録:
投稿 (Atom)