アプリ版:「スタンプのみでお礼する」機能のリリースについて

初投稿です。宜しくお願いします。

ActivePerl5.8.0+Apache1.3.14でSessionを使用した
Webサイトを作成中なのですが、
ppm経由でインストールしたCGI::Sessionを
useしようとしても、エラーになってしまいます。

サンプルコードは以下の通りです。

#!/usr/bin/perl

use CGI::Session;

&ses();
&print();

sub ses() {
# Session作成・ここから
my $session = new CGI::Session(undef, undef, {Directory => './tmp'});
my $tmpSID = $session->id();

$session->param('menu', 'MENU1');

$session->expire('+2h');

$session->header();
}

sub print() {
print "Content-type: text/html;charset=ISO-2022-JP\n\n";
print <<EOF;
OK!
EOF
}

use CGI::Session; の部分(と、Session関数を
呼び出している部分)をコメントアウト
すると、とりあえずはエラーが出なくなるので、
原因はここだとわかっているのですが、
文法的に間違っているとは思えないですし、
困っています。
情報お願いいたします。

A 回答 (2件)

>lib.pmが無いようですが、lib.pmを


>どのフォルダに置いてやればよろしいのでしょうか??

一番単純なのは、先のサンプルコードのファイルと同じ場所に置いておけば読み込んでくれるはずです。

もう少し賢いやり方は、libモジュールを使って、パスを通してやることです。
use CGI::Sesssion;
する前に
use lib qw('lib.pmが置いてある場所の相対パスまたは絶対パス');
としてやれば良いと思いますよ。

他にも、直接@INCにパスを通す方法
BEGIN { unshift @INC,"パス" };
もありますが、前者の方が良いです。

lib.pm以外にパスが通っていないモジュールが必要になった場合も、同様の処置で対応できるでしょう。

#今、実行環境がなく、試せないため、上記でうまくいくのかちょっと心配。
    • good
    • 0
この回答へのお礼

ありがとうございます。
lib.pmを追加したところ、
別の.pmファイルを追加しろ、と
エラーメッセージが変わりました。
合計4ファイル追加したのですが、
まだエラーが取りきれないようです(笑)。
もう少し追加してみますね。
ご回答ありがとうございました。

お礼日時:2004/06/09 20:07

試して見たのですが、OK! が表示されました。

(ActivePerl5.8.3 WinXP上)

エラーが表示された。と言うことですが、どう言うエラーでしょうか?
多分。必要なモジュールがインストールされていない。と言った類いの問題だと思うのです。

なんとか.pm が無いぞ! などとエラーメッセージに書かれていないでしょうか?

この回答への補足

早速の返信ありがとうございます。
コマンドラインでは正常に動作するのですが、
ブラウザ上ではInternal Server Errorに
なってしまうんです。

今、Apacheのエラーログを見てみたら、
Can't locate lib.pm in @INC (@INC contains: .)
と表示されていました。
lib.pmが無いようですが、lib.pmを
どのフォルダに置いてやればよろしいのでしょうか??

補足日時:2004/06/09 18:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!