• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ログを新しい順に保存)

ログを新しい順に保存する方法とアドバイス

このQ&Aのポイント
  • cgiでメールフォームのログを新しい順に保存する方法を教えてください
  • ログをテキスト形式で保存し、新しい順に並べる方法を教えてください
  • ログを新しい順に保存するためにはどの部分を変更すればいいですか

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

現在の状態がどういう風にマズイのか良く判らないのですが、 例えば log.txt が A B C の時に open OUT,">> log.txt"; print OUT $data,"\n"; close OUT; すると A B C D になります。 ここで open IN,"log.txt"; @txt = <IN>; @txt = reverse @txt; close IN; して open OUT,"> log.txt"; print out @txt; close out; すると D C B A になりますが、 この後で open OUT,">> log.txt"; print OUT $data,"\n"; close OUT; すると D C B A E になるのでマズイと・そういうことですか? 単純に、 open OUT,">> log.txt"; print OUT $data,"\n"; close OUT; をして、常に最後に書き込むが 必要になって時点で open IN,"log.txt"; @txt = <IN>; @txt = reverse @txt; close IN; で取り出すようにする(ログ自体は古い方から新しい順)か open IN,"log.txt"; @txt = <IN>; @txt = reverse @txt; close IN; した後で、 open OUT,"> log.txt"; print OUT $data,"\n"; print OUT @txt; close OUT; すればいい(ログは常に新しいモノから古い順)ように思います。

Karin2006Karin
質問者

お礼

BLUEPIXYさん、早速のご返答ありがとうございます。 もしかして、 open OUT,">> log.txt"; print OUT $data,"\n"; close OUT; open IN,"log.txt"; @txt = <IN>; @txt = reverse @txt; close IN; open OUT,">> log.txt"; print OUT $data,"\n"; close OUT; と、一度 open INした後に、もう一度書き出さなくてはいけないのですか。。 open IN,"log.txt"; @txt = <IN>; @txt = reverse @txt; close IN; と記述するだけで逆順に保存されるのだとばかり思っていました。 お手数おかけしてすみません。m(_ _)m

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>@txt = reverse @txt; >と記述するだけで逆順に保存されるのだとばかり思っていました。 これは、配列の内容(メモリ上の内容)を逆順にするものですから 保存するためには書き出してやらないといけません。

Karin2006Karin
質問者

お礼

BLUEPIXYさん、 ありがとうございました。解決しました!

関連するQ&A