改行について

[上に] [前に] [次に]
テキスト 1999/06/10(木) 01:46:09
練習でテキストに書き込む掲示板を作ったのですが、
コメント欄に改行して文章を書くと、
文章が1つおきに表示されちゃいます。
2度も改行するのはなぜでしょうか??
スクリプトです↓
#!/usr/bin/perl

require './cgi-lib.pl'; # cgi-lib.plの場所
&ReadParse;
### --- 基本設定 --- ###
$title = "テキスト掲示板";
$logfile = './txt.txt';
$tempfile = "temp";
$method = 'POST';
### --- メイン処理 --- ###
&form_decode;
if ($mode eq "move") { &resist; }
&html_log;
### --- 入力 --- ###
sub html_log {
# ヘッダを出力
&header;
print "<b>$title</b>\n";;
print "<form action=\"$script\" method=$method>\n";
print "<input type=hidden name=mode value=\"move\">\n";
print "名前:<input type=text name=name><input type=submit value=\"投稿する\">\n";
print "<br>コメント:<br><textarea name=comment rows=5 cols=60 wrap=off></textarea>\n";
print "</form>\n";
&footer;
exit;
}
### --- 処理 --- ###
sub resist {
open(TMP,">$tempfile");
print TMP "-------------------------------------\n";
print TMP "名前:$name\n";
print TMP "-------------------------------------\n";
print TMP "$comment\n";
print TMP "-------------------------------------\n";
open(DATA,$logfile);
@DATA=<DATA>;
for ($i=0; $i<50; $i++) {
print TMP $DATA[$i];
}
close(DATA);
close(TMP);

rename($tempfile,$logfile);

&header;
print "<b>書き込み完了</b><br>\n";
print "<META http-equiv\=Refresh
content=0;URL=txt.txt>\n";
&footer;
exit;
}

### --- フォームからのデータ処理 --- ###
sub form_decode {
$mode = $in{'mode'};
$name = $in{'name'};
$comment = $in{'comment'};
}

### --- HTMLのヘッダー --- ###
sub header {
print "Content-type: text/html\n\n";
print "<html>\n<head>\n";
print "<META HTTP-EQUIV=\"Content-type\" CONTENT=
\"text/html; charset=x-sjis\">\n";
print "<title>$title</title></head>\n";
print "<body>\n";
}
### --- HTMLのフッター --- ###
sub footer {
print "</body></html>\n";
}

sekita [E-Mail] 1999/06/10(木) 12:40:13
多分、UNIXとWINDOWSの改行文字のちがいからではないでしょうか?
WIN: "\r\n"
UNIX:"\n"
のためにWINで書いた文字をそのままUNIXにコピーすると
\rも改行とみなされ1行おきになってしまいます。

exon 1999/06/15(火) 06:46:05
cgi-lib.pl をイジって 改行コードを統一するようにしたほうがいいかも。
\r\n --> \n
\r    --> \n

改行コードを<BR>タグに置換えたほうが、ログファイルにうまく記録できますけどね。

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