That's important, because you're doing nearly everything else right. Without seeing your code, I expect you may be doing something like this:my $object = Class->new(); my $self = \$object;
Unfortunately, since $self is declared as a lexical in the method and is shifted off of @_, the object is overwritten inside of the method with the restored code without updating the object itself.$object->restore(); sub restore { my $self = shift; $self = restore(); }
Possibly the best way around this is to return the new $self from the method. If you're concerned about interface purity, why not make a deserialization constructor? Another option is to take advantage of Perl's pass by reference semantics, operating directly on $_[0].
sub deserialize { my $class = shift; return $class->restore(); } sub restore_me { $_[0] = $_[0]->restore(); }
In reply to Re: storable $self
by chromatic
in thread storable $self
by smackdab
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |