- ベストアンサー
textareaの入力データで無駄な改行が…
textareaでデータ入力し、perlで拾うと無駄に改行が入ってしまいます。 <textarea name="textarea_data"> a a a </textarea> これをPerlで拾って表示させると a a a と表示されてしまいます。 改行が無駄に一つ入ってしまっているのですが、考えられる原因は何でしょうか? print "$FORM{'textarea_data'}"; で表示させています。\n等は入れていません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
入力側の改行コードがCRLFになっているからではないでしょうか。 もしサーバがunix系OSで、改行コードがCRLFのデータをそのままコンソールに出力させると改行2つ分に見えるかもしれません。 参考URLのサイトのように改行コードを統一すると解決するかもしれません。
その他の回答 (2)
- moon_night
- ベストアンサー率32% (598/1831)
改行コードの問題ですね。\r\nになっています。 $FORM{'textarea_data'} =~ s/\r\n|\r/\n/g; \nに統一したほうがいいでしょう。
お礼
無事、解決いたしました。 ありがとうございました。
- Ethersky
- ベストアンサー率71% (168/235)
連想配列(ハッシュ)%FORMにフォームデータを入れる処理に問題があると思いますがその辺りはどういう処理にしているのでしょうか?
お礼
無事、解決しました。 ありがとうございました。
補足
フォームデータの読み込み部はこれですね…。 よろしくお願いします。 #========================# # フォームデータ読み込み # #========================# sub form_read{ if($ENV{'REQUEST_METHOD'} eq 'POST'){ read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else{ $query = $ENV{'QUERY_STRING'}; } foreach $pair (split(/&/, $query)) { ($key, $value) = split(/=/, $pair); # 文字のデコード $value =~ tr/+/ /; $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg; $FORM{$key} = $value; } $action=$FORM{'action'}; }
お礼
ありがとうございます。 お察しの通り、OSはLinuxを使っており、HTML部、CGI部、双方の文字コードををEUCにしたところ、解決しました。 お騒がせしました。