![]() |
カレッヂ |
質問者 capsule460
投稿日 1/15(火) 11:57:40
いつも大変お世話になっております。 今回もどうぞよろしくお願いいたします。 さて、今回困っているのは、ファイルの頭に新しいデータを追加していくとへんな 改行が追加されてしまうという現象なんです。 プログラムは、 unless( open(FILE, "+<$filename") ){ &error("ファイルをopenできませんでした。"); exit; } @data = <FILE>; foreach $data(@data){ ($w_filename,$kokaiflg)=split(/\t/,$data); if($kokaiflg == 1){ $kokaiflg = 0; } if($w_filename eq $new_filename){ $pastflg=1; $kokaiflg=1; } $w_data = "$w_filename\t$kokaiflg\n"; @w_table = (@w_table,"$w_data"); } } $new_data="$newdata1\t$newdata2\n"; unshift(@w_table,$new_data) truncate(FILE,0); seek(FILE,0,0); print FILE @data; close(FILE); といった感じです。 まったくたいしたことをやっているわけではないのですが、 途中で過去のデータを回して、フラグのチェックなどをして、 @w_tableという配列に構築しなおしています。 このあたりが問題なのかなと思っているのですが、 新しいデータを追加し続けると、3つ目くらいで、 改行が最後に追加されてしまい、その以降も続けると バンバン改行が追加され、セパレートの¥tまでなぜか単独で存在したりする という現象が発生してしまいます。 なにかご教示いただければ幸いです。 どうぞよろしくお願いいたします。 |
回答者 しあわせのツボ
[削除]
投稿日 1/15(火) 14:00:38
読み込んだ$kokaiflgの末尾に\nが残っているのが原因でしょう。 ($w_filename,$kokaiflg)=split(/\t/,$data); の直後に chop $kokaiflg; を追加してみて下さい。 |
質問者 capsule460
[削除]
投稿日 1/15(火) 14:07:40
しあわせのツボ様 いつも本当にお世話になっております。 な、なるほどっ!! っかー、もうはまりまくって思考停止状態でした。 僕なんて、まだまだですねぇ。 かなりすっきりしました。 本当にありがとうございました。 |
このページは終了したので返信(回答)は書きこめません
Web裏技 |