これは、一つのファイルに append していくタイプです。 この機能は Tie::JournaledFile クラスが提供します。
このクラスは、データを追加する場合にも使われていますし、過去のデータを 参照したい場合にも用いられますが、追加のオペレーションしか行なえません。 つまり LFS (Log Structured File System) のような振舞いです。
参照する際は最後に追加したデータが取り出されます。 つまり、値は追加された値を last match で取り出しています。 [1]
このクラスは、サイズを度外視して一定期間のあいだ記録しておきたいデータ に対して使います。たとえば、登録時の confirmation のキャッシュや message-id キャッシュです。これらは expire を時間で制御したいからです。 このクラスは引数でファイル名を与えることになっているので、ファイル名に 日付つきのファイルを選ぶと良いでしょう。
なお、普通の tie() とは違う
key => [ ろぐ1 (どっかのふぁいるのどっかの行), ろぐ2 (どっかのふぁいるのどっかの行), ろぐ3 (どっかのふぁいるのどっかの行), ]型のデータ取り出しをしたい場合があります。 この形のデータ取り出しは get_all_values_as_hash_ref() メソッドを使えば可能です。
Warning |
なお検索時の挙動の first match と last match は切替えることができます。 どちらの戦略で探すのか、クラスオブジェクトを生成する際に明示的に指定す ることが推奨されます。デフォルトは last match です(最後に書き込んだデー タが返される振舞いが自然です)。 |
[1] | 原理上 last match 以上の情報抽出も可能です。 過去のログを追跡していくことで、全データ一覧の生成ができます。 また、 last match を first match に切替えることも出来ます。 |
author's homepage is www.fml.org/home/fukachan/.
Also, visit nuinui's world :) at www.nuinui.net.
For questions about FML, e-mail <fml-bugs@fml.org>.