Cricket では,各監視対象に関するデータをコンフィグファイルから一旦 config.db というファイル名の Berkeley DB に書き出すことになっています.そのため,この config.db をどう操作するのかさえ理解していれば,随分とソースコードは読みやすくなります.
config.db に書かれる内容については,ConfigTree::Node のソースに書いてあるコメントが一番参考になる.
# Just to recap: # d is for data # t is for tags # n is for names # D is for dicts # c if for a list of children # p is for the name of the parent # r:$name is 1 when this node is a directory (lets us ignore empty # directories later) # f:file => mtime # F: => comma separated list of files
Berkeley DB では key => value でデータを記録していくわけですが,Cricket ではその key の部分をいくつかのパートに分けています.最初に value がどのようなデータなのかという種別を表す一文字の英字がでてきて,その後にファイル名だの,ノード名だのが出てくる.その最初の一文字の英字が上のコメントで説明されています.
config.db から値を読み込むときには,ConfigTree::Cache が使われます.
Perl の世界では,Berkeley DB とのインタフェースとして DB_File がよく使われており,Cricket も基本的には DB_File 経由で読み出しを行いますが,Cricket が扱うデータは多岐に渡るわ,上のようなヘンテコなデータの扱い方をしているため,DB_File のみを経由させて Berkeley DB からデータを読み出そうと思うと相当メンドいことになります.
それをハッシュとして簡単に扱える形にするのが ConfigTree::Cache::ConfigHash になっているので,ConfigTree::Cache::ConfigTree と上記コメント部,後は各データが何を表すのかのリファレンス(The Cricket Reference Guide) を知っておけば,ソースを読むのはかなり簡単になると思われます.