> By attribute do you mean an element of the data structure that is blessed
> in the object? Or do you mean some sort of new attribute you would assign
a
> new Serializable data type (ala something to suggest for Perl 6).

I think that what Brian was trying to say is that you could mark an object
attribute as being transient and Data::Dumper would ignore it.

Maybe the way to do it would be to have a Serializable class that could have
the following methods:

freeze($self) : SCALAR
thaw ($class) : OBJECT
clone($self) : OBJECT;
_freeze($self): SCALAR
_remove_transient_attributes($self);

The transient attributes names could be stored in @TRANSIENT.
Maybe we could also have a more generic $TRANSIENT coderef as well.

Whenever you want to serialize an object calling freeze, then the object is
cloned and the clone gets its transient attributes removed. That we can call
_freeze on the modified copy.

With this interface it would be possible to subclass Serializable with
Serializable::FreezeThaw, Serializable::DataDenter or
Serializable::XMLDumper for instance (just override the _freeze and thaw
methods). The objects can also redefine the clone() method if they need to.

Now there's only one drawback that I can see - It needs to be written :-)
Cheers,

--
Jean-Michel Hiver.

Reply via email to