- 締切済み
ファイルの読み込み操作のコーディングについて
perlのファイル読み込み操作についての質問です #!/usr/local/bin/perl #ファイルの読み込み open(FILE,"<diary.txt"); $data = <FILE>; close(FILE); #サーバー出力 print <<END; Content-type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>ファイルの読み込み</title> </head> <body> <h5> <p>$data</p> </h5> </body> </html> END 次のように、perlのコードを書いて無料の CGIの使えるレンタルサーバーに 設置したところ、エラーが出てしまいます dairy.txtはこのファイルと同じディレクトリで パスも間違えてないです、いろいろ自分で調べてみたんですが どこが間違えているかわかりません よろしかったらどなたかperlに詳しい方がいらっしゃったら 間違えている箇所を教えていただけないでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- x415f484f
- ベストアンサー率71% (57/80)
もしかすると ANo.2 の方のご指摘で動作しているのかも知れないですが > サーバーで指定されたパスを入力しているので > perlのパスは間違ってないと思います > パーミッションの設定も755と指定されており > そうしているので、間違ってないはずです > txtファイルは644と指定されてるので > そうしているのですがなぜかエラーが出てしまいます・・ となると、他に考えられるのは FTP での転送モードでしょうか? Windows の改行コードは CR(0x0d)+LF(0x0a) UNIX 系の改行コードは LF(0x0a) UNIX 系のサーバだと改行コードに CR が入っていると先頭部分の処理用 プログラムの指定部分で /usr/local/bin/perl: bad interpreter: No such file or directory というエラーが発生しているのではないでしょうか? それは CR という改行コードも文字列の「^M」として扱い /usr/local/bin/perl^M と解釈される訳で、「/usr/local/bin/perl」が見つからないということに なると思われます。 FTP 転送にどんなものを使われているかの記述がないので細かいことは 言えませんが、ASCII(アスキー)、BINARY(バイナリ)とかの転送モードが 異なっているのではないでしょうか?
- shimix
- ベストアンサー率54% (865/1590)
「Hello World!」のような簡単なものはサーバで動作確認されていますね?また、ENDの行は「改行」で終わっていますか? それ以外の文法的な問題などはないです。
お礼
回答ありがとうございます 色々調べた結果 ヒアドキュメントの後に exit(0); とつけるとうまく表示することができました
久しく、Perlは使っていないので、「#ファイルの読み込み」の所を、実際に試してみましたが、そのままでうごきそうですねー。 第一ファイルがなくても、動くし。 『#!/usr/local/bin/perl』や『#!/usr/bin/perl』がサーバにあっていないとか。 CGIを置ける位置が違うとかなのかな? cgi/”CGIはこの中だけ”とか。 ローカルサーバで試してみたと思うので、サーバ上の設定をチェックしてみてくださいね。 初歩的なことが速く解決するといいですね。
補足
回答ありがとうございます サーバーで指定されたパスを入力しているので perlのパスは間違ってないと思います パーミッションの設定も755と指定されており そうしているので、間違ってないはずです txtファイルは644と指定されてるので そうしているのですがなぜかエラーが出てしまいます・・ 色々調べてはいるんですが原因がわかりません・・・
お礼
回答ありがとうございます モードはアスキーモードで転送していました 色々調べた結果 ヒアドキュメントの後に exit(0); とつけるとうまく表示することができました