Storableを用いた複雑なデータの保存と復帰
最近になって多重ハッシュをYAMLで吐き出したらデータをそのまま眺めてもよいし,便利じゃね?ということに気がついてYAMLでオブジェクトを保存していた.(ちゃんとbless情報まで保存される,Perl素敵)
容量が大きくなる場合はGDBMやらRDBMSやらを使っているのだが,唯一の難点はどんなデータが入っているのか,ちらりと見るのが面倒くさいということ.lessコマンドで見せてくれよ.
とここまで書いて気がついたのだが,そのDBを眺めるようなlessコマンドを自分で作ってしまえばいい.どうやってDB形式を判断するかは今のところわからないが,(fileコマンドで判断できそうだ 2008-01-20追記)それ以外ならつくれる.よし,今日は他にやることがあるから明日つくろう.(以下,数学的帰納法により永遠につくられないことが証明される).
閑話休題.しかしdbを使うまでもなく,それでも容量を少なく抑えたい場合はStorableモジュールを使うっぽい.標準モジュールなので追加の必要はない.storeの第1引数は必ずリファレンスを渡す.
use Storable; my $hoge = SomeClass->new("some data"); store $hoge, 'somefilename'; my $foo = retrieve 'somefilename'; $foo->somemethod();
$fooを$hogeと全く同様の状態に復帰することができる.
圧縮のため,binary形式になってしまうのが唯一の難点.PerlだったらData::Dumperがよいのかもしれないけれど,他の言語で使うことを考えると現状はYAMLかJSONが妥当な選択肢なんでしょうか.
研究室に置いてあった続・初めてのPerl(第1版)に書いてあった.まだアルパカレベルってことですね.
続・初めてのPerl - Perlオブジェクト、リファレンス、モジュール
- 作者: Randal L.Schwartz,Tom Phoenix,ドキュメントシステム
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2003/12
- メディア: 単行本
- 購入: 1人 クリック: 13回
- この商品を含むブログ (70件) を見る