- ベストアンサー
組み込まれていないモジュールについて
レンタルサーバを使って、PrelによるCGIを作っています。 サンプルのCGIを動作させようと思ったのですが、必要なモジュールがあり、契約しているサーバではそれらが組み込まれていませんでした。 こういう場合、自分で同様の処理をするCGIを作って動作させるしかないのでしょうか? ちなみに、そのレンタルサーバはモジュールの組み込みはやってくれないそうです(当然ですが・・・)。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Pure Perlな、というのは、つまりPerlのみで書かれたモジュールの事です。XML::ParserやXML::LibXMLは外部に依存していますので、そういうものではなくモジュール内で完結していて、しかもPerlで書かれているものを探してみてはいかがでしょう、と言う意味です。こうしたものは、基本的に正しく置きさえすれば動作します。 例えば、SOAP::Liteに含まれるXML::Parser::Liteは、PurePerlなパーサモジュールです。CPANで探してみてください。参考URLには、これの改良版を示します。また、簡易な用途であれば、自前で解析してしまうのも(場合によっては)有りかも知れません。 telnet(と言うかシェル?)が使えないのは厳しいですが、その意味では他のプログラムをインストール出来ない事も厳しいです。今回のように別システムに依存したモジュールも数多くありますので。ただ、勉強としてならば、ローカル環境で十分とも思います。ローカルにサーバを立てて、それで実験しましょう。経験的には、自由になるサーバが手元に一台あると、勉強効率が違うように思います。 まだ初心者を脱しきれない私が言うのもなんですが、Perlを極めると言うのは、どんな環境でも柔軟に対応出来るということが、一つにあると思います。Perlは自然言語的な側面が大きい言語なので、『極める』というのがどんな事であるかという、そこから考えなければなりませんけれど。
その他の回答 (2)
- hikomin
- ベストアンサー率63% (40/63)
XML::ParserはExpatというパーサを利用するモジュールです。ちょっと性質が違いますが、XML::LibXMLというのもありますが、これはLibXMLというパーサを利用します。いずれも、モジュール以外にも必要なモノが揃っていなければ動作しません。 他プログラムなどのインストールが環境であれば良いですが、そうでないとこれらは厳しいかもしれません。Pure Perlなモジュールを探してみると良いでしょう。(正規表現ベースのPure Perlパーサもありますので。) ちなみに、@INCには一応カレントディレクトリが含まれます。(汚染モードだと入らなかったかも…。)ので、プログラムと同じディレクトリにモジュールをおくだけでも大丈夫な場合が多いです。例えば、HTML::Templateモジュールを入れる時、 + test.cgi + HTML/Template.pm のように、HTMLディレクトリを作りTemplate.pmを入れるとかで出来ます。 任意のディレクトリにモジュールを入れている場合は、use libすると良いでしょう。 use lib './modules/';
補足
レスありがとうございます。 やってみましたが、やはりおくだけでは駄目のようです(私のやり方が違っているのかもしれないですが・・・)。 モジュールは、今まで自分でインストールすことも無かったので、あまり詳しく知らないのですが(使う程度)、Pure Perlなモジュールというのがよくわかりません・・・。 このあたりを、お教え願えないでしょうか? 使えそうなら、試してみたいので。 ちなみに、使用しているサーバはTelnetが使えないのですが、今後Perlを極めようと思ったら、使えたほうがいいでしょうか? よろしくお願いします。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
必要なモジュール*.pmをダウンロードし、適当なフォルダにアップして、@INCにフォルダを追加するような手順でうまくいきませんか 他のモジュールへの依存など、なかなか難しい面もあるかと思いますが
補足
レスありがとうございます。 まだ試していません、すみません。 使いたいモジュールは、XML関連です(ParsarとDOM)。 正直、モジュールを自分で組み込んでというのはやったことが無かったので、これから試して見ます。
お礼
いろいろありがとうございます、レスが遅くなりました。 教えていただいた物を試して見ます。 また、どうせ処理したいXMLデータは簡単なものなので、自分で書こうかなとも思ってました(時間はかかると思いますが、これも勉強です・・・)。 ローカルにサーバを立てるのは、考えてました。 実際の運用サーバと極力同じ設定をして、テストしてからアップしたほうがいいですしね。 いろいろありがとうございました。 これからも、いろいろと躓くこともあると思いますが、そのときはご教授ください。