Thanks for the suggestion, but what's worse is that I'm caching Rose::DB::Object,not Rose::DB.
same difference
http://search.cpan.org/grep?cpanid=JSIRACUSA&release=Rose-DB-Object-0.797&string=storable&i=1&n=1&C=0
http://cpansearch.perl.org/src/JSIRACUSA/Rose-DB-Object-0.797/t/db-object-helpers.t
my $o = $class->new(id => 1)->load_or_save;
my $frozen = Storable::freeze($o->strip(strip_on_save_ok => 1));
my $thawed = Storable::thaw($frozen);
And there seems no simple way to extract the hash it contains.
http://cpansearch.perl.org/src/JSIRACUSA/Rose-DB-Object-0.797/lib/Rose/DB/Object/Cached.pm
sub remember
{
my($self) = shift;
my $class = ref $self;
my $meta = $self->meta;
my $pk = join(PK_SEP, grep { defined } map { $self->$_() } $meta->pr
+imary_key_column_accessor_names);
no strict 'refs';
my $ttl_secs = $class->meta->cached_objects_expire_in || 0;
my $loaded = $ttl_secs ? time : 0;
${"${class}::Objects_By_Id"}{$pk} = $self;
if($ttl_secs)
{
${"${class}::Objects_By_Id_Loaded"}{$pk} = $loaded;
}
my $accessor = $meta->column_accessor_method_names_hash;
foreach my $cols ($self->meta->unique_keys_column_names)
{
no warnings;
my $key_name = join(UK_SEP, @$cols);
my $key_value = join(UK_SEP, grep { defined($_) ? $_ : UNDEF }
map { my $m = $accessor->{$_}; $self->$m() }
+@$cols);
${"${class}::Objects_By_Key"}{$key_name}{$key_value} = $self;
${"${class}::Objects_Keys"}{$pk}{$key_name} = $key_value;
if($ttl_secs)
{
${"${class}::Objects_By_Key_Loaded"}{$key_name}{$key_value} = $l
+oaded;
}
}
};