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作成の第三引数の当たりに
何か不具合でもあるのか?
事前準備(環境設定など)に不備があるのか?
心当たりのある方、教えてください。
よろしくお願いいたします。
お礼
第3引数{Directory=>"/tmp"}の/tmpに当たるtmpディレクトリを当AP配下に 作成してみましたが成功しません。そこで、/tmpを絶対パスで書き直したところ、うまく動作しました。 書物やCPANなどを読んでも プログラマーが特別な事前準備をしろとは書いていないので、 約束事としてそう書けば、perl.exeが自動的にディレクトリ作成を含め 動いてくれるものと思っていました。 お手数をかけました。 余談:CGI::Sessionは3.95を使用していますが、4.20はWindows版の ZIP形式は提供されていないようですし、 4.20ではメソッドも増加しており、newの記述形式も多様化している ように見えます。まだまだ、発展途上かな?という印象です。