• 締切済み

新しいログの書き込み

新しいログを追加で上に書き込む方法はどのようにしたらよいのかアイディアがありません。 ご教授願います。 if($mode eq "html"){ flock(FH, LOCK_EX); open(FH,"${datafile}"); @html = <FH>; close(FH); flock(FH, LOCK_NB); $html = join('',@html); @html = split(/$chtml/ , $html); $html[1] = $data; $html = join($chtml,@html); flock(FH, LOCK_EX); open(FH,">$datafile"); print FH $html; close(FH); flock(FH, LOCK_NB);

みんなの回答

  • atom_seed
  • ベストアンサー率48% (25/52)
回答No.2

簡単に手順だけ紹介します。 a.dat というログデータだったとします。 ・新しいログをb.datへ書き込み ・a.datの中身をb.datへ追記 ・b.datをa.datへリネーム

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

・open する前に flockしても何の意味もないし。 ・close 後に flockするのもこれまた無意味。 ・空文字列で join するくらいならはじめから丸呑みすべき。 ・教授じゃなくて教示 Perlの排他制御 (flock,open,symlink,mkdir,rename) http://homepage1.nifty.com/glass/tom_neko/web/web_04.html open FH, '+<', $datafile or &error($!); flock FH, LOCK_EX | LOCK_NB; my $html = do {local $/; <FH>}; $html = join $chtml, $data, $html; seek FH, 0, 0; print FH, $html; close FH;