- ベストアンサー
なんで標準出力に出ないんだろう
初心者です。教えて下さい。 勉強のつもりで簡単なPerlプログラムを作ったんですが、これを実行するとダウンロードになっちゃうんだな なんでだろ #! /usr/local/bin/perl -w use strict; my $Agent_ID='PC'; my $Pass_Name='PC_index.html'; #####"この2行はあとで使おうと思って入れてあります" print<<"EOM"; Content-type:text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <TITLE>xxxxエンジニアリング</TITLE> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META name="description" content="xxxxエンジニアリングのホームページです。"> <META name="keyword" content="xxxxエンジニアリング"> <META name="auther" content="xxxxエンジニアリング"> </HEAD> <BODY bgcolor="skyblue"> ようこそ、xxxxエンジニアリングのホームページへ。<BR><BR> </BODY> </HTML> EOM 1;
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
print<<"EOM"; と Content-type:text/html の間に空行を入れてはいけません。 Content-type の前に空行禁止というのは HTTP の決め事で、Perl の使い方の問題ではありません。 だから、もしこれだけで解決しない場合も、空行はとっておいてくださいね。
その他の回答 (1)
「ダウンロードになっちゃう」とは、正しく表現すると以下ですか。 「InternetExploreのダイアログ『ファイルのダウンロード-セキュリティの警告』が表示され、実行・保存・キャンセルのいずれかを選択するように求められる」
お礼
正常に表示するようになりました。ありがとうございます。 実際のソースには、Content~の前にインデント用のタブも入っていました。空行と、タブを取り除いて、 print<<"EOM"; content-type:text/html のようにContent~を行の先頭にしたところ表示するようになりました。 重複しますが、ありがとうございました。
補足
その通りです。昨日、初めて質問をしたので、書き方が至らなく申し訳ありません。 それで、 『ファイルのダウンロード-セキュリティの警告』で [保存]を選択してテンポラリの場所に書き込んでみると print <<"EOM"; ~ EOM の間のステートメントがテキスト形式で書き込まれます。 別のPCで試してみても同じ結果になるので、Perlの書き方が悪いと思っているのですが・・・ よろしくお願いいたします。
お礼
正常に表示するようになりました。ありがとうございます。 実際のソースには、Content~の前にインデント用のタブも入っていました。空行と、タブを取り除いて、 print<<"EOM"; content-type:text/html のようにContent~を行の先頭にしたところ表示するようになりました。 重複しますが、ありがとうございました。