Perlでの改行について

[上に] [前に] [次に]
ごん 1999/12/01(水) 23:45:38
perlの勉強中に分からないことがでたので質問します。

あるperlプログラムなんですが
#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "おはようございます。\n";
print "こんにちは。\n";
print "こんばんは。\n";

の出力結果が おはようございます。こんにちは。こんばんは。
と一行になっています。
\nをつけると改行するんじゃないんですか?
試しに 
print "Content-type: text/html\n\n";
の文を取って、結果を見たら、
Content-Typeヘッダが正しくありません。とは出ますが
ちゃんと改行されて、結果が出ます。
ヘッダも正しくて、改行もされるようにするにはどうすればいいのでしょうか?

Syn [E-Mail] 1999/12/01(水) 23:49:26
ソースの表示をしてみましょう。 改行されているはず。
すなわち、 <br> タグを改行したいところに書きましょう。

ごん 1999/12/02(木) 00:19:04
そうですね。 ソーステキストだと改行されてますね。
ソースで改行されて、ブラウザ画面では改行しないと言うのが、
\nの意味なんですか?

Syn [E-Mail] 1999/12/02(木) 00:36:25
んーと、ふつうにテキストエディタで HTML を書くときに、
改行は単なる区切り文字として扱われるので、ブラウザで
も一文字分の空白として表示されますよね。

CGI で HTML 出力をするときも同じなのです。
ちなみに、 \n を入れなければ、ソース表示では改行がなく
なって全部一行に出力されます。

(Content-type: text/html\n\n の \n\n を消すとエラーになるので
注意してください)

ごん 1999/12/02(木) 01:27:31
>も一文字分の空白として表示されますよね。
\nというのは HTMLでいうところの<BR>じゃあないんですか
半角スペースと考えていいということですか?

1999/12/02(木) 01:50:34
メモ帳でなんか書いてるときに
Enterキーとかを押すとできる改行って言うことじゃないんでしょうか?

1999/12/02(木) 01:58:11
>\nというのは HTMLでいうところの<BR>じゃあないんですか
そうです。
しかし、ヘッダがprint "Content-type: text/html\n\n";なので「HTMLでいうところの〜」は通用しません。
\nはプレーンテキストで改行だと考えてください。

print "Content-type: text/html\n\n";

print "Content-type: text/plain\n\n";
に変更するとわかるのでは?
もしくは<pre>をprint "Content-type: text/html\n\n";の直後に出すとか。

>半角スペースと考えていいということですか?
HTMLでは同じ扱いですよね。

P初心者 1999/12/02(木) 09:58:55
やはり、HTMLなら 最低<HMTL></HTML>ぐらいは書いた方が!

print "Content-type: text/html\n\n";
print "<HTML>\n";
print "おはようございます。\n";
print "<BR>";
print "こんにちは。\n";
print "<BR>";
print "こんばんは。\n";
print "</HTML>\n";

ごん 1999/12/02(木) 17:15:59
[[解決]]
んー 何となく分かってきました
僕は今まで、dosプロンプトの画面が苦手で
perlをブラウザでしか見たことが無く
ブラウザで見るときには必ず
print "Content-type: text/html\n\n";
をつけなきゃいけないと思って意味も知らずつけてましたが、
そうするとhtmlとして認識されるんですね。
で純粋にperlスクリプトを見るときはこの呪文みたいのを
print "Content-type: text/plain\n\n";
とすればいいのか・・・
これで、勉強に進むことができます。
ありがとうございました。

[上に] [前に] [次に]