• ベストアンサー

なぜエラー?

フォームに書き込まれた内容をCGIへ送る練習をしているのですが、どーーーーしてもエラーがでます(泣) 何故でしょうか。(改行や日本語処理はおいておいて下さい) CGI側をコピペしてみます。 #!/usr/local/bin/perl require 'lib/cgi-lib.pl'; &ReadParse(*form); print "Content-type: text/html\n\n"; print "<html>\n"; print "<head><title></title></head>\n"; print "$form{'kousin'}\n"; print "</body>\n"; print "</html>\n"; __END__ でエラー内容が # lib/cgi-lib.pl did not return a true value. File 'Macintosh HD:Desktop Folder:home:new:new.cgi'; Line 3 です。 cgi-lib.plは置き場所を変更してみたりしてるんですが、どこに置いても同じです。Line3ってこれ以上どーすればいいのでしょう‥‥うぅ。 MacOSでMacJPerl、サーバーにQuid Pro Quoを使ってます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

cgi-libはどこから入手したものでしょう。改行コードの問題ありませんか? 通常、配布されているライブラリはUnix用に書かれたもので、Unix<->Windowsでは改行コードが違ってもCGIで使うならちゃんと動いてくれることも多いですが、Macの場合どうなんでしょう。 ご存じだとは思いますが、改行コードは Unix:LF Windows:CR,LF Mac:CR です。 と、ここまで書いて、 Unixの改行コードで保存されていたら、一致するものがないので動かない可能性は十分あるなと思ったりもしています。 テキストエディタでMac用の改行コード(CR)で保存直して試してみてはどうでしょう。 "ビンゴ!"だったらいいのですが。 PATHの指定方法が間違っていましたが、":"を使うのは正しいようです。 googleで、"MACPERL" で多くのサイトが検索され、いくつかそのことにふれています。 "::lib:cgi-lib.pl" が正しいそうです。でも、"/" で認識してるかんじですよね。記述が間違ってるんですかね。

Terari
質問者

お礼

できました!!できましたよぅ~(感涙) cgi-lib.plの改行コードの問題だったみたいです。CRに変更したらできました。 本当にありがとうございました!! これでやっと次のステップに進めます。 頑張ります。 ちなみに/か:か、ですが、/で認識されていて、:だと認識されませんでした。

Terari
質問者

補足

御協力下さった皆様、本当にありがとうございました。 色々注意しなくてはいけない点などがわかり、大変勉強になりました。 また何かと質問する事もあると思いますが、よろしくお願いします。

すると、全ての回答が全文表示されます。

その他の回答 (4)

noname#48234
noname#48234
回答No.4

#3です。 それから、<body>の開始タグもお忘れなく。 print "<html>\n"; → print "<html><body>\n"; ご質問のcgi-lib.plの問題が解決されても、表示がおかしくなる可能性がありますので。

Terari
質問者

お礼

あぁ、ほんとだ‥‥<body>開始タグ、忘れてますね‥‥‥ 全然気付きませんでした(^^; 御指摘ありがとうございました。

Terari
質問者

補足

補足の欄をお借りします。 なかなか解決されません(泣) これでどうかな?など御意見がありましたら、ぜひ書き込んで下さい。 もっと状況説明が必要でしたら、書き込みますので一言お願いします。 よろしくお願いします。

すると、全ての回答が全文表示されます。
noname#48234
noname#48234
回答No.3

cgi-lib.plはCGI本体の1つ下の階層にあるのですか? require 'lib/cgi-lib.pl';       ↓       ↓ require './lib/cgi-lib.pl'; と変えてみてはどうでしょう?

Terari
質問者

お礼

アドバイスありがとうございます。 require './lib/cgi-lib.pl';としてみましたが、ダメでした。 cgi-lib.plの置き場所が悪いかと思い、色々な階層に置いてやってみたんですが、どこに置いても同じエラーがでるんです。置き場所や、パスミス(?)ではないみたいなんですが‥‥

すると、全ての回答が全文表示されます。
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

cgi-lib.plの最後で、 1; ってな文が無かったら、追加してみて下さい。

Terari
質問者

お礼

アドバイスありがとうございます。 ちゃんと最後に1;はありました。一安心です。

すると、全ての回答が全文表示されます。
回答No.1

Macは全然触ったことがないので『大外し』かも分かりません。 'cgi-lib.pl'を同じフォルダに置いて require 'cgi-lib.pl'; としてもエラーがでますか。 >Folder:home:new:new.cgi'; Line 3 ここが気になります。':'がMac流のPATHの区切り記号ですか? require 'lib:cgi-lib.pl'; としたらどうなります?

Terari
質問者

お礼

アドバイスありがとうございます。 cgi-lib.plを同じフォルダに置いても(上でも下でもどこでもですが)同じエラーがでます。 require 'lib:cgi-lib.pl'; というのもやってみましたが、これはダメでした。言われて気付きましたが、なんで:で区切られてるんでしょうね(^^;

すると、全ての回答が全文表示されます。

関連するQ&A