• ベストアンサー

perlで作成中ですが、改行がおかしいです

よろしくお願いします data.txtに 入っているデータをすべて読み込み(@lines)、HTMLのテキストエリアにそのまま@linesで書き出すと、 ------------texterea------------ 1,名前,タイトル・・・・  2,名前,タイトル・・・・  3,名前,タイトル・・・・ ------------/texterea----------- というように、テキストエリアには、2行目以降の行頭に半角スペースが出てしまいます。 まずは、こちらを正しく表示する方法を教えてください。 また、このテキストエリアで データを訂正したものを、再びdata.txtに書き込みたいのですが name=newlogでクエリして、 print OUT $in{'newlog'}; としてdata.txtにそのまま書き出そうとすると、ログには改行が増えてしまい、下記のようにログがどんどん壊れていってしまいます。 1,名前,タイトル・・・・  2,名前,タイトル・・・・  3,名前,タイトル・・・・ この対策方法を教えて頂きたいのです。 どうぞよろしくお願い致します。

  • CGI
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • the845t
  • ベストアンサー率33% (246/743)
回答No.1

たぶん、 print "@line"; としているのでは? print @line; でうまくいくはずです。

angelusbell
質問者

お礼

ごめんなさい! 一旦EOMで閉じて、print @lines; にしましたら 半角スペースはなくなりました。 ありがとうございました。 あとは、改行が増えてしまう件を頑張ってみますが 何か分かりましたらヒントをお願い致します。

angelusbell
質問者

補足

お返事ありがとうございます。 下記のようになっていますが、何か問題点は見あたりますでしょうか? 色々やってみまして、文字コードが 問題のような気もするのですが・・・ 関係ないことかもしれませんが、CGIをエディタで 読み込む時に、「属性情報が一致しません・・・」のようなエラーが出ます。(エラーが出ても読み込めますが・・) また、何かありましたら、どうぞお願い致します。 ----------- print <<EOM; 省略 <texterea> @lines </texterea> 省略 EOM -----------

その他の回答 (1)

回答No.2

\nがついているデータに、 さらに\nをつけて書き出していないでしょうか? 簡単に直すには、 いったんchomp $in{'newlog'};してから、 データに書き出してやれば良いかと思います。 (もしくは二重に入らないようにどちらかを消したり等) 最初に半角の空白が入ってしまうのは、 my @line = qw(this is a perly pen); print "@line"; としたときに、 "thisisaperlypen"ではなくて、 "this is a perly pen"と出力されるように、 という設計上の工夫によるものです。 (その方が見やすいでしょ?とLarryWall氏の何かの発言にありました) 例えば、こんな感じで回避します。 (printの内容が@logだけなら""を取れば良いだけで意味ないですが・・) {   local $";   print "@log"; }

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=651491
angelusbell
質問者

補足

ご回答ありがとうございます。 スペースの件は、下で解決致しました。 ありがとうございました。 改行の件も、何とか解決致しました。 newlogを@配列に戻して、HTMLに書き出そうとしていましたが その処理が間違えていました。 @lines =$in{'newlog'}; とすると、newlogが配列に戻るかと思っていたのですが、これではおかしいですよね。 下記の様にしてから @linesで書き出しましたら 解決致しました。 @lines = split(/\n/, $in{'newlog'}); print @lines; 皆様 ありがとうございました。

関連するQ&A

  • 改行について

    フォームのテキストエリアに入力されたデータを PHPと連動してmySqlに格納したいと思っています。 テキストエリアから渡された文字列中に改行がある場合、 そのまま格納しても(サニタイズは当然するとして)問題ないでしょうか? それとも<BR>等に変換すべきでしょうか?

    • ベストアンサー
    • MySQL
  • セル内改行をそんままテキスト出力するには?

    セル内で「Alt」+「Enter」で改行されたデータを VBAでテキストファイル(*.txt)に出力したいのですが、 そのままだと、セルの内容が1行になってしまいます。 どのようにすれば、セルで改行したようにテキスト内で改行できるのでしょうか?

  • <br>タグを改行に変えたい

    掲示板を作っています。 テキストファイルに書き込んである文字列ですが、改行は<BR>に変換して保存します。 編集で呼び出すときに、<BR>をもとの改行コードに戻す作業を試みています。 $message =~ s/<br>/\n/ig; とやるとテキストエリアがすべて空白です。 $message =~ s/<br/\n/ig; と>をなくすと改行されてテキストエリアに表示されます。 ただ、データには>が残ったまま表示されます。 この対処法を教えてください。

    • ベストアンサー
    • Perl
  • COPYコマンドで結合すると余計な改行コードができる

    batファイル内でCOPYコマンドで2つのファイルを結合するコードを書いています。 しかし、中身が空の0KBのデータ同士を結合すると、改行データが1つ含まれる1KBのデータが作成されてしまいます。 この改行データの作成を防ぐにはどのようなコマンドを書けばよろしいでしょうか。どなたかご存知の方がいれば宜しくお願い致します。 【2つのファイルを用意】 test01.txt 0KB test02.txt 0KB ↓ 【結合】 COPY test*.txt test.txt ↓ 【改行コードを含むテキストが作成される】 text.txt 1KB

  • 改行の削除

    現在入力したデータをデータベースに保存し、 そのデータをPHPで表示するようにしています。 入力する場所はテキストエリアで改行などを入れてるのですが、データベースでテキストエリアに表示するときに 下記のように<br />が入ってしまいます。 あ<br /> か<br /> さ そこで、下記のような処理を行ったのですが、やはり上記のような表示になってしまいます。 何かよい方法はありませんでしょうか? $tmpStr = str_replace("<br />", "", trim($tgtStr));

    • ベストアンサー
    • PHP
  • 改行して書きたい

    シリアル通信で定期的に4桁の数字が送られてきます。 それをSample.txtに 0126 0125 0125 0125 0124 と言う風に、記録したいんですが、実際やってみると 0124 と、データが上書きされてしまい,一番最後に送られてきた数字しか記録されません。 これを改行して書くにはどうしたらいいんでしょうか、おしえてください。  data = RecvStr  IO.File.WriteAllText("C:\Test\Sample.txt", data, System.Text.Encoding.GetEncoding("Shift-JIS"))

  • winの.txtデータをmacで

    winのword2000で作成した.txtデータをmacのシンプルテキストで開くと行頭に改行マーク(半角スペース)が入るのですが、入らないようにするにはどうすればいいでしょうか。 win側、mac側どちらも教えてください。

    • ベストアンサー
    • Mac
  • Java Scriptによるテキストエリア内での改行

    Java Scriptでテキストエリアに文字を書き込む方法で、 フォーム名.テキストエリア名.value = "文字&文字" と書けば、テキストエリアに文字&文字を書き込んでくれます。 でも、こうすると、改行ができません。 どうすれば、改行ができるようになるのでしょうか?

  • OSXで作成したテキストをWINで読むと・・・

    教えてください。 マックOS10.3標準のテキストエディットというエディタで作成したテキスト(.txt)をWINで読むと、改行したところが改行されておらず、かわりに“↑”のような矢印が入っています。2回改行したところは2個入っています。WIN上でこれをPDFにしたり、印刷するとこの矢印は印刷されず、ちゃんと改行もされていますが、開いているテキストデータはそのまま矢印が健在です。 WINでは標準のメモ帳を使ってますが、WINで作成したテキストについてはMAC上でもきちんと改行されてますし、それを再度WINへ戻してもMACで入れた改行以外は矢印が入らないようです。 どなたかこの矢印解消方法をご存知ありませんか?

  • DBからのデータを改行して表示

    テキストエリアで入力したものを → DB DB→入力したものを表示する場合、 改行して入力したものを、改行したまま表示したいのですが 方法がわかりません。 str_replace()とか使って見ましたがダメでした。 教えて下さい。

    • ベストアンサー
    • PHP