靴下さんの Perl のエラーは、syntax error が出ている行の文法エラーでした。
靴下さん、
秀丸を使っているのでしたね。
いとさんが言う通り、「エディタ的」行番号表示で、「はりつけ」るのではなく CGIのファイルを読み込んだ方が間違いが少ないでしょう。
ファイルはそのまま送ってもらってかまいません。
中田さん、Richard さん、どうもありがとうございます。
エラーについて基本的なことがわかっていなかったようで、
おふたりの説明を読んで、これが AN HTTPD に直接かかわる問題ではない
ということは理解できました。
Richard さんのおっしゃる、
ふたつのメッセージは実質的には同じことを述べている、
ということもわかります。
中田さんから教えていただいた行番号についての問題は
やはり私の数え方がおかしかったのだと思います。
もう一度調べて検討したいと思います。
ただ、 AN HTTPD とは無関係とはいうものの、
できればファイルを見ていただきたいと思います。
見ていただく準備をしてからご連絡させていただきたいのですが、
そのときはまたよろしくお願いします。
どうもありがとうございました。
靴下さん、行番号が一致しない件ですが
Perlでは行頭から改行コード(LF, CR+LF など)までを 1行と数えていると思います。
テキストエディタでもこれと同じ行の数え方をすれば、エラーメッセージ中の行番号と
Perlスクリプトソースの行番号は完全に一致するはずです。
テキストエディタでは改行までを 1行と数える以外に、ウィンドウの右端で折り返した
ときに折り返った部分にも行番号を振る表示方法があるものもあります。私が使っている
EmEditorでは前者を「論理座標」後者を「表示座標」と呼んで行番号表示方法の切り換えが
可能です。
秀丸エディタは全く使ってないのでその辺りがどうなっているのかと思ってGoogleで
「秀丸エディタ 行番号表示」を検索したところ、以下のページがみつかりました。
http://cucu81.jp/@perl/contents/01/p02-02.html
秀丸エディタでは「エディタ的」と「ワープロ的」と呼んで区別しているようです。
靴下さんの場合、もし設定が「ワープロ的」になっているなら「エディタ的」に変えて
表示させれば206行目にみつかりませんか?
あとスクリプトを「はりつけた」と言われているのがちょっと気になりますね。
秀丸エディタで直接そのスクリプトファイルを開いた方が確実ではないかと思います。
靴下さん、
Richard さんの説明もありますが、誤解のないように再度説明します。
syntax error ... 以下の3行のエラーメッセージは Perl が出しているメッセージです。
AN HTTPD は Perl が出しているメッセージをそのまま表示しているだけです。
コマンドプロンプト(DOSプロンプト)でC:\www\ashizuka\public_html\postmail01に移り、
perl postmail01_w.cgi
とすることで同じエラーが出るでしょう。
このことから AN HTTPD が無関係で、Perlの文法エラーであることがわかると思います。
プロバイダの UNIX サーバなどでも、HTTPサーバのエラーログなどに同じエラーメッセージが出ているはずです。
いずれにしてもPerl のエラーメッセージですから、文字通り解釈できないとすれば、 ActiveState などに問い合わせをするべきでしょう。
行番号が表示できるエディタを使っているのでしょうか?
>syntax error at C:\www\ashizuka\public_html\postmail01\postmail01_w.cgi line 206, near ") {"
について言えば、文字通り 206行目に ") {" があるはずです。 206行目にないとすると行番号がおかしいです。 あるいは、違うフォルダにあるソースを見てしまっているとか。。。?
もちろん "syntax error" の原因が 206行目にあるとは限りません。
http://www.kt.rim.or.jp/~kbk/perl5.doc/perldiag.html
の syntax error のところも参考にしてください。
本当に(1)はエラーなしで(2)でそのエラーになるとすると、ちょっと原因はわかりません。
どうしてもわからなければ、2つのファイルをメールで送ってくれれば見てみますけど。
靴下カタオさん(2002/05/16 02:26投稿分)へ
>エラー表示の行番号とスクリプトの行番号が
>一致していないようなのです。
よくある事だと思いますが。ANHTTPDとは無関係だと思います。
Perl入門のサイトを探した方が早いのではないでしょうか?
ちなみにANHTTPDが吐く細かいエラーメッセージは、その他のISPが
提供するようなサーバの吐く「internal server error」に含まれる
内容で、同義であり、あなたのスクリプトに問題があるとどちらの
サーバも指摘しているわけです。ANHTTPDだけが違った動作をして
いるわけではないと思います。
なかおさん、どうもありがとうございます。
実は、単純かも知れないんですけど、ひとつの問題がなかなか解決できないでいます。
(1)というメッセージが発行され、プロバイダでは
if ( $_ eq "color01" || $_ eq "color02" ) {
}
#ア if (substr($_, 0, 5) eq "color") {
#ア }
だと、AN HTTP Server でも、プロバイダでもエラーは出ないのに
(2)
#ア if ( $_ eq "color01" || $_ eq "color02" ) {
#ア }
if (substr($_, 0, 5) eq "color") {
}
だと AN HTTP Server では
Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ:
syntax error at C:\www\ashizuka\public_html\postmail01\postmail01_w.cgi line 206, near ") {"
syntax error at C:\www\ashizuka\public_html\postmail01\postmail01_w.cgi line 221, near "elsif"
Execution of C:\www\ashizuka\public_html\postmail01\postmail01_w.cgi aborted due to compilation errors.
エラーが出る場合、エラーの行かその行より前に間違いがあると思います。
この場合はカッコが間違っているのではと思いますが
お世話になっております。
エラーについて、基本的なことをお伺いします。
syntax error at C:\www\ashizuka\public_html\postmail01\postmail01_w.cgi line 206, near ") {" というようなエラーを調べるために、