dポイントプレゼントキャンペーン実施中!

Perl5.8を使用してセッション管理の学習をしています。
CGI::Session3.95ライブラリをインストールしました。
OSはWindowsXPです。
session objectは以下のように作成しました。
my $session= new CGI::Session("driver:File",undef,{Directory=>"/tmp"});
パラメータも書き足しました。
my $name=$cgi->param("name");
my $address=$cgi->param("address");
$session->param("name",$name);
$session->param("address",$address);

コマンドプロンプトで実行すると
(in cleanup) could not flush: Couldn't store 10072b9e2a3580831dd151127e0
d1989 into \tmp\cgisess_10072b9e2a3580831dd151127e0d1989: No such file or directory
とエラーメッセージが出力されて、ファイルが作成できません。

session object作成の第三引数の当たりに
何か不具合でもあるのか?
事前準備(環境設定など)に不備があるのか?

心当たりのある方、教えてください。
よろしくお願いいたします。

A 回答 (1件)

エラーメッセージから考えると、カレントドライブにフォルダ¥tmpが存在しない、あるいは書き込み不許可なのでは。



my $session= new CGI::Session( );

――にしてみるとか。
    • good
    • 0
この回答へのお礼

第3引数{Directory=>"/tmp"}の/tmpに当たるtmpディレクトリを当AP配下に
作成してみましたが成功しません。そこで、/tmpを絶対パスで書き直したところ、うまく動作しました。
書物やCPANなどを読んでも
プログラマーが特別な事前準備をしろとは書いていないので、
約束事としてそう書けば、perl.exeが自動的にディレクトリ作成を含め
動いてくれるものと思っていました。

お手数をかけました。

余談:CGI::Sessionは3.95を使用していますが、4.20はWindows版の
ZIP形式は提供されていないようですし、
4.20ではメソッドも増加しており、newの記述形式も多様化している
ように見えます。まだまだ、発展途上かな?という印象です。

お礼日時:2006/12/20 10:43

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