クイズプログラムを動かすには?
[上に]
[前に]
[次に]
みえ
[E-Mail]
[HomePage]
1999/10/31(日) 02:02:36
CGI初心者です。
クイズプログラムを作って転送したのですが、
「問題ファイルがオープンできません」とエラーになります。
一応ちゃんと設問ファイルも転送しているのですが・・・。
設問ファイルに、なんらかの拡張子がいるのでしょうか?
ちなみにそのページのURLは、
http://cgi.www5a.biglobe.ne.jp/~m-life/quiz.cgi
です。どなたか教えて下さい。
鈴木真
1999/10/31(日) 02:49:55
「問題ファイルがオープンできません」とメッセージが表示されるのは
正常に作動してる証拠です。
多分スクリプトから呼び出すファイルが指定の場所に無いからこのメッ
セージが表示されると思うのですが。
そのスクリプトもしくは説明書を提示してもらわないと無いとわからな
いです。
みえ
[E-Mail]
[HomePage]
1999/10/31(日) 08:36:46
スクリプトというと、プログラム全文でしょうか?
#!/usr/local/bin/perl
require 'cgiparse.pl';
$0 =~ s/(.*)\/([^\/]*)$/${2}/;
$kind = $ARGV[0];
$QF = "$1/$kind";
print &cgi'HTTPHeader();
print &cgi'SimpleTitle('Quiz');
unless (-f $QF) { #設問ファイルがあるかどうかのチェック
print "<H1>問題ファイルがオープンできません。</H1>\n";
print &cgi'SimpleEnd();
exit;
}
まだ続きますが、こんな感じです。
ファイルの指定の場所っていうのがどこか、
そこからもう分からないんです。すいません。
J.Naka
1999/10/31(日) 11:33:27
設問ファイルは、↓の部分で、変数 $kind に設定されています。
>$kind = $ARGV[0];
で、$kindに設定する元は、$ARGV[0]です。
これは、URLの最後に、 ? を付けた後ろの部分です。
だから多分、そのスクリプト呼び出しURLの最後尾に、
?ファイルネーム が無いか、間違っているのではないでしょうか?
--------------------
あと、ファイルパス取得の、
>$0 =~ s/(.*)\/([^\/]*)$/${2}/;
これが分かりません。正規表現のソース文字列は何処からくるのかな?
この提示コードは、スクリプト先頭からの抜粋ですよね?
B-Cus
1999/10/31(日) 15:27:27
説明書読んだの? そもそもこれはどこで配布されてるの?
>> $0 =~ s/(.*)\/([^\/]*)$/${2}/;
> これが分かりません。
print $0 するCGIスクリプトを動かせばわかるのに。
J.Naka
1999/10/31(日) 15:44:28
>print $0 するCGIスクリプトを動かせばわかるのに。
あっ(^^;;
CGIスクリプトのコマンド名(フルパスの場合もある)でした。
みえ
1999/10/31(日) 22:32:59
何度もすいません。
その設問ファイル名が、「yama」というものなんですが、
http://cgi.www5a.biglobe.ne.jp/~m-life/quiz.cgi?yama
ということですよね?
これで出ないということは、やっぱり何か
このファイルに原因があるのでしょうか。
配布されてるフリーソフトとかじゃなくて、
(多分)初心者用CGI本の丸写しで、かなり勉強不足な所あります。
だから、自分のタイプミスっていうのもあるかも・・・。
J.Naka
1999/10/31(日) 23:29:57
>このファイルに原因があるのでしょうか。
ファイル yama に原因あるか無いかの問題でなく、指定ディレクトリにあるか無いかの問題です。
提示されたスクリプトのコードでは、パスの設定部分、
$0 =~ s/(.*)\/([^\/]*)$/${2}/;
で、スクリプトと同じディレクトリが $1 に格納され。
下のコードで、パスとスクリプト起動引数=設問ファイル名がドッキングして、$QF に格納されます。
$QF = "$1/$kind";
結果、設問ファイル yama のアドレスは、
"/~m-life/yama"
になります。
この位置に、設問ファイル yama がありますか?
yama には拡張子は無いですね?
-------------
コード説明分かりますか?
#"分からなくていいや"では悲しいです。
[上に]
[前に]
[次に]