• 締切済み

ファイルの読み込み操作のコーディングについて

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に詳しい方がいらっしゃったら 間違えている箇所を教えていただけないでしょうか?

みんなの回答

  • x415f484f
  • ベストアンサー率71% (57/80)
回答No.3

もしかすると 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(バイナリ)とかの転送モードが 異なっているのではないでしょうか?

tadokoro12
質問者

お礼

回答ありがとうございます モードはアスキーモードで転送していました 色々調べた結果 ヒアドキュメントの後に exit(0); とつけるとうまく表示することができました

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

「Hello World!」のような簡単なものはサーバで動作確認されていますね?また、ENDの行は「改行」で終わっていますか? それ以外の文法的な問題などはないです。

tadokoro12
質問者

お礼

回答ありがとうございます 色々調べた結果 ヒアドキュメントの後に exit(0); とつけるとうまく表示することができました

noname#58606
noname#58606
回答No.1

久しく、Perlは使っていないので、「#ファイルの読み込み」の所を、実際に試してみましたが、そのままでうごきそうですねー。 第一ファイルがなくても、動くし。 『#!/usr/local/bin/perl』や『#!/usr/bin/perl』がサーバにあっていないとか。 CGIを置ける位置が違うとかなのかな? cgi/”CGIはこの中だけ”とか。 ローカルサーバで試してみたと思うので、サーバ上の設定をチェックしてみてくださいね。 初歩的なことが速く解決するといいですね。

tadokoro12
質問者

補足

回答ありがとうございます サーバーで指定されたパスを入力しているので perlのパスは間違ってないと思います パーミッションの設定も755と指定されており そうしているので、間違ってないはずです txtファイルは644と指定されてるので そうしているのですがなぜかエラーが出てしまいます・・ 色々調べてはいるんですが原因がわかりません・・・

関連するQ&A