Logを整理するには?
[上に]
[前に]
[次に]
徒歩
1999/12/09(木) 16:45:16
始めまして。
始めて投稿させて頂きます。
Logに何かを記録しようと思い、
http://www.tohoho-web.com/wwwperl1.htm#OutputFile
を読ませていただきました。
が、その方法でやると、
> ファイルに追加書き込みするには次のようにします。
> open(OUT, ">> datafile.txt");
> print(OUT "こんにちわ\n");
> close(OUT);
1番新しい、記録が下のほうになってしまいます。
しかし、掲示板やChatを見ると、みんな新しいものは上に記録しています。
結論・・・
ログに記録するときに、新しい記録分を上に出来ないか、
ということです。
よろしくお願いします。
では
徒歩
1999/12/09(木) 16:54:17
実行イメージ
現状
記録 by 16:40
記録 by 16:41
・・・16:47
・・・16:50
対処後
・・・16:50
・・・16:47
記録 by 16:41
記録 by 16:40
J.Naka
1999/12/09(木) 17:05:04
今のログ記録方式を図解すると、
ファイル先頭<-- -->ファイル後端
[No.1][No.2][N0.3]
新しいデータ [New] を過去ログの後部にアペンドして
[No.1][No.2][No.3][No.4]
を、
ファイル先頭<-- -->ファイル後端
[No.3.[No.2][No.1]
新しいデータ [New] の後ろに過去のログをアペンド
[No.4][No.3][No.2][No.1]
となれば良いわけですね。
アペンド先が変わるだけって事。
徒歩
1999/12/09(木) 17:10:50
すばやいレスありがとうございます。
そうです。
そのとおりです。
徒歩
1999/12/09(木) 17:59:23
アぺンド先を変えるには?
どうしたらよいのでしょうか?
と言う質問に変更・・・(^^;
よろしくお願いします。
B-Cus
1999/12/09(木) 18:10:26
open(IN,"file");
@buf=<IN>;
close(IN);
open(OUT,">file");
print OUT "newdata";
print OUT @buf;
close(IN);
とか
open(OUT,">tmp");
print OUT "newdata";
open(IN,"file");
while (<IN>){
print OUT $_;
}
close(IN);
close(OUT);
rename("tmp","file");
とか。
徒歩
1999/12/09(木) 18:21:59
[[解決]]
ありがとうございました。
出来ました。
ここで質問して良かったです。
ところで、
2つありますが、どちらの方が良いんでしょうね・・・。
では。
J.Naka
1999/12/09(木) 18:48:57
B-Cusさんの二つのルーチンのメリット&デメリットは、
処理の簡易さでは、上のルーチンが良いです。
ログファイルが消えたりする可能性の少なさという安全性では、下のルーチンが良いです。
重要でないログファイルならば、上のルーチン。
大事なログファイルならば、下のルーチン。
徒歩
1999/12/09(木) 18:56:16
[[解決]]
なるほど。
よくわかりました。
J.Naka引き続きありがとうございました。
ではー(^^)
[上に]
[前に]
[次に]