古い記事
ランダムジャンプ
新しい記事
Perl の Storable モジュールでちょっとだけ複雑なデータを扱うときの自分用 SYNOPSIS。参考「続・初めての Perl[2006-05-09-1]

#!/usr/bin/perl
use strict;
use warnings;
use Storable qw(nstore retrieve);

my ($first, $second);

$first->{uhyo} = {
   'abc' => 123,
   'xyz' => 9,
};
$first->{hogera} = {
   'AAAAA' => [1, 2, 3],
   'ABCDEF' => [60,1],
   'W002' => [9, 1, 2],
};

test_print($first);

nstore [ $first->{uhyo}, $first->{hogera} ], "a.dat";

($second->{uhyo}, $second->{hogera}) = @{retrieve "a.dat"};

test_print($second);

sub test_print {
   my ($ref) = @_;
   while (my ($key, $value) = each %{$ref->{uhyo}}) {
       print "1: $key => $value\n";
   }
   while (my ($key, $value) = each %{$ref->{hogera}}) {
       print "2: $key => @$value\n";
   }
}

Storable で保存したデータって、作成したスクリプトがないと復元方法が分からなくて後から困るんだろうなあ、と思っていたけど、もちろんそんなことはなく、普通に読み込んで Data::Dumper で出力すれば良いだけだった (p.65)。
perl -MStorable -MData::Dumper -e 'print Dumper(retrieve shift)' a.dat


追記060511:
- 404 Blog Not Found:perl - 勝手に添削 - Storable
http://blog.livedoor.jp/dankogai/archives/50490051.html
Always use nstore and nfreeze instead of store and freeze.
常にnstoreとnfreezeを使う事。storeとfreezeではなく。
おお、なるほど! これでエンディアンで悩まされなくて済むわけですね。
ありがとうございます。これに基づき上のソースを変更しました。
変更した箇所のもとの記述は以下でした:
use Storable;
store [ $first->{uhyo}, $first->{hogera} ], "a.dat";