学校のサーバーでCGIとしてPerlをやっているのですが、-wを与えないとInternal Server Errorを出してくれる、変なサーバーなのです。
かといって-wをつけると、ちょっとした警告が続出して、エラー出力があると判断されてやっぱりInternal Server Errorになるのです。
強行手段としてclose(STDERR)すると、ほとんど消えたのですが、
Name "main::x" used only once: possible typo at index.cgi line 73.
のように、変数を1回しか使ってないという警告が残ってしまいます。
完全にエラーや警告メッセージをなくすにはどうしたらよいでしょう。
No.1
- 回答日時:
そのメッセージは $x がどこにも使われてないので出ます。
ので、その変数は削除しましょう。
また、-w で出る警告はすべて取り除きましょう。
この回答への補足
補足します。
どうやら別のモジュールで定義した変数を、ロードした側で1回しか使わないと、このメッセージが出るみたいです。
----------------
#!/usr/bin/perl -w
# index.cgi
require 'include.pm';
print $x;
----------------
# include.pm
$x = 'hoge';
って感じです。
requireしたモジュールの中で使われても、使われた回数にはカウントされないのでしょうか。
-wで出るものはすべて取り除いたのですが、ハッシュのキーが定義されていないものを参照しただけで警告が出るのは、ちょっといただけないです。
それをいちいちコードでチェックしている方が重くなると思うのですが・・・。
-w以外のオプションを追加することはできませんでした。
ちなみにversion 5.005_03 built for sun4-solaris、Apache/1.3.24 Serverです。
No.2ベストアンサー
- 回答日時:
----------------
#!/usr/bin/perl -w
# index.cgi
use include;
print $include::x;
----------------
package include;
# include.pm
$x = 'hoge';
1;
----------------
上記の用にパッケージ化すれば出なくなります。
サーバエラーが出るのは改行コードの問題かもしれません。
Solaris なら dos2unix のコマンドがあるのでそれで改行コードを変更してください。
% od -x index.cgi
と実行して
0d0a とか 0d が含まれていたら改行コードが dos 形式になってます。
この回答への補足
# この補足文はこの回答に対するお礼文のあとに書かれました。
NTのユーザープロファイルを作り直したところ、IEの問題だとわかりました。
ついでに-wをつけなければならなかった理由は、最初の
#!/usr/local/bin/perl
の行がlfでなくcrlfで終わっていたからのようです。
まさかこんなことで・・・。
改行文字を変えるというのがずばり当たっていました。
どうもありがとうございました。
お返事ありがとうございます。
はぁ、もうなんだかわかりません。
すべてのエラーメッセージをなくしても何も表示してくれなくなりました。
おっしゃる通り改行コードはlfだけに変更してみました。
問題なのは、日本語をUTF-8で書いているところなのでしょうか。
もちろん、コメントと文字列内にしかUTF-8は使っていません。
UTF-8はEUCと同じように、ASCII文字以外には0~0x80を使わないそうなので、EUCでできるならUTF-8でできないとは思えないのですが。
perl5.6以降がUTF-8に対応すると書いてありますが、対応するというのは、文字列の長さをUTF-8として測ってくれるとかその辺だそうですから、それ以前が対応していようと対応していまいと関係ないです。
事実ターミナル上ではちゃんと出力されています。
なんでここまできて動かないんでしょう。
もしかしたらIEが壊れたんでしょうか・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ソフトウェア) 至急!500 Internal Server Errorこのエラーはなんですか?原因と解決法教えてく 4 2022/06/21 15:50
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- 輸入車 BMW2シリーズ アクティブツアラーの警告表示について 2016年製 走行39000km 2022年 2 2022/11/15 07:54
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- オープンソース Vue+Laravelのデザインテンプレートのサンプルが起動できない 1 2022/05/18 21:52
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
- その他(パソコン・周辺機器) dvd書き込めない 5 2022/03/22 19:06
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jcode.plが読み込めない
-
perlのrequireの動き方について...
-
perlをインストールしたのに使...
-
cgiとplとpm
-
cgiからcgiをコールする。
-
月の第一週とは
-
よくある 『 第○(1・2・3・4・...
-
エクセルで毎月第2週日の水曜日...
-
DBを10件毎に表示ページング...
-
apacheでPerl CGIが作動せず、5...
-
Excelで第一〇曜日を求める方法...
-
燃えるゴミの日は何曜日ですか?
-
エクセルで相対パスの書き方を...
-
[Excel] ある日の曜日が当月の"...
-
VBA。複数のChangeイベントをま...
-
6月の第2 第4火曜日は何日...
-
週2回のペースって だいたい何...
-
ディレクトリパスの取得について
-
ftpでのネットワークバイトオー...
-
CGI RESCUEの簡易予約システムY...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
cgiとplとpm
-
perlのrequireの動き方について...
-
jcode.plが読み込めない
-
自CGIのURLのパス部分を取得す...
-
Perlソースを2つのファイルに分...
-
Perlのデバッグ方法って。。。...
-
mt-check.cgiでForbiddenエラー...
-
webからroot権限のコマンドを実...
-
useとrequireでエラー
-
画像のURLの変数を別のCG...
-
Quantifier follows nothing in...
-
require文が実行できない
-
コマンドラインでGET or POSTで...
-
apacheのCGI設定について教えて...
-
Not Found 404エラー時のCGI出力
-
htmlからテキストを返すperlを...
-
perlのcgiで、変数の中身を表示...
-
use CGI
-
フォームでインクリメント入力→...
-
Internal Server Error
おすすめ情報