学校のサーバーで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.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が壊れたんでしょうか・・・。
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です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CGIの中にinclude
-
携帯用のページに perl で post
-
Quantifier follows nothing in...
-
Not Found 404エラー時のCGI出力
-
HTML化によるホームページの高...
-
環境変数に任意の文字列をセッ...
-
さくらレンタルサーバーのライ...
-
週2回のペースって だいたい何...
-
月の第一週とは
-
アンケートなどの1日1回の投...
-
毎○曜日って、使いますか?
-
エクセルで相対パスの書き方を...
-
BASE64でエンコードしてPOSTし...
-
平日朝の国道246線混雑状況につ...
-
毎週同じ曜日にラブホに行くと...
-
メールをPDF化する際に、ヘッダ...
-
エクセルで毎月第2週日の水曜日...
-
よくある 『 第○(1・2・3・4・...
-
Consolidateメソッドの引数のSo...
-
クライアントのIPとマシン名を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jcode.plが読み込めない
-
バイナリファイルのアップロード
-
cgiとplとpm
-
Perlから他のcgiへPOSTでデータ...
-
htmlからテキストを返すperlを...
-
CGIの中にinclude
-
require文が実行できない
-
useとrequireでエラー
-
自CGIのURLのパス部分を取得す...
-
掲示板などのCGIでモード別機能...
-
gifcat.pl:助言お願い致します
-
Quantifier follows nothing in...
-
mt-check.cgiでForbiddenエラー...
-
perlのcgiで、変数の中身を表示...
-
コマンドラインでGET or POSTで...
-
perlのrequireの動き方について...
-
error_logファイルの中身で教え...
-
cgiからcgiをコールする。
-
ログイン成功の後は?
-
拡張子を省略してcgiを実行する...
おすすめ情報