アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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(バイナリ)とかの転送モードが
異なっているのではないでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/03/10 00:54

「Hello World!」のような簡単なものはサーバで動作確認されていますね?また、ENDの行は「改行」で終わっていますか?



それ以外の文法的な問題などはないです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/03/10 00:54

久しく、Perlは使っていないので、「#ファイルの読み込み」の所を、実際に試してみましたが、そのままでうごきそうですねー。


第一ファイルがなくても、動くし。

『#!/usr/local/bin/perl』や『#!/usr/bin/perl』がサーバにあっていないとか。
CGIを置ける位置が違うとかなのかな?
cgi/”CGIはこの中だけ”とか。
ローカルサーバで試してみたと思うので、サーバ上の設定をチェックしてみてくださいね。

初歩的なことが速く解決するといいですね。

この回答への補足

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

補足日時:2008/03/09 23:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!