私のCGIが動かないのです

[上に] [前に] [次に]
あき 1999/10/04(月) 01:41:40
非常にずうずうしいお願いで申し訳ないのですが、私の作っている
CGIのどこがいけないのか教えてください。

$new_tatemsg = "$name<>$email<>$url<>$date<>$subj\n";
@tatelines = "";
unshift(@tatelines,$new_tatemsg);
open(TATEOUT,">>$tatefile") || &error("OPEN エラー");
print TATEOUT @tatelines;
close(TATEOUT);

このCGIを実行したのですが、$tatefileで示すファイルに何も書き込まれません。

このファイルはデータ0件で作ってあり、OPENエラーのメッセージも表示されていません。
@tatelinesに書き込みたい内容がセットされていることは確認しました。
以上の点から書き込みのprint文で失敗していると思っているのですが、原因がわかりません。

また、現在0件なので追加書き出しではなく">$tatefile"にしてみたり、
とにかく書き出しできるかprint TATEOUT "aaa\n";に変えてみたりと
いろいろやってみましたが、どうしても書き出しできません。

大変申し訳ないのですが、どこが間違っているか、あるいは他にも確認しておくべきこと
などありましたら教えてください。
よろしくお願いいたします。

@たて? 1999/10/04(月) 06:51:49
http://www.tohoho-web.com/wwwperl3.htm#ForArray
を参考にすると、
print TATEOUT @tatelines;

for $a (@tatelines) {
    print (TATEOUT "$a");
}
でよろしいのではないでしょうか?

神無月 1999/10/04(月) 13:56:51
サーバがUNIXならば、フォルダやファイルのパーミッションは確認されたでしょうか?

墟露ちゃん 1999/10/04(月) 14:56:51
対象のファイルを消して実行すると
ファイルができてる(サイズ0でも):OPENは正常
ファイルがない          :OPENがダメ

逆にファイルに何件か書いておいて、
読めるか(内容をprint)を試すと、
ちゃんとそのファイルを見ているかがわかります。

ついでにハンドル名ももう一度チェックしてください。

まあエラー処理が書いてあるから、
オープンがらみではないと思いますけど…

では、
内容が空なのは@tatelinesに何も入ってないからだとすると、
print TATEOUT ”<”.@tatelines.”>¥n”;
とすると@tatelinesが<>に挟まれるので中身が有るか解ります、

あと、どう見ても全文ではないので、
ここに書いてない部分にエラーが有るかもしれませんよ…

あき 1999/10/04(月) 15:36:28
[[解決]]
皆様、お時間をとらせて本当に申し訳ありませんでした。
どうぞお許しください。

一晩寝たら、私のプロヴァイダは
$tatefile = $ENV{'HOME'} . "/cgi-bin/" . $tatefile;
にしなければファイルにアクセスできないのを思い出しました。

本当にありがとうございました。

[上に] [前に] [次に]