The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Data::Serializer:: - Modules that serialize data structures

SYNOPSIS

  use Data::Serializer;
  
  $obj = Data::Serializer->new();

  $obj = Data::Serializer->new(
                          serializer => 'Storable',
                          digester   => 'MD5',
                          cipher     => 'DES',
                          secret     => 'my secret',
                          compress   => 1,
                        );

  $serialized = $obj->serialize({a => [1,2,3],b => 5});
  $deserialized = $obj->deserialize($serialized);
  print "$deserialized->{b}\n";

DESCRIPTION

Provides a unified interface to the various serializing modules currently available. Adds the functionality of both compression and encryption.

METHODS

new - constructor
  $obj = Data::Serializer->new();


  $obj = Data::Serializer->new(
                         serializer => 'Data::Dumper',
                         digester   => 'SHA1',
                         cipher     => 'Blowfish',
                         secret     => undef,
                         portable   => '1',
                         compress   => '0',
                   serializer_token => '1',
                           options  => {},
                        );

new is the constructor object for Data::Serializer objects.

  • The default serializer is Data::Dumper

  • The default digester is SHA1

  • The default cipher is Blowfish

  • The default secret is undef

  • The default portable is 1

  • The default compress is 0

  • The default serializer_token is 1

  • The default options is {} (pass nothing on to serializer)

serialize - serialize reference
  $serialized = $obj->serialize({a => [1,2,3],b => 5});

Serializes the reference specified.

Will compress if compress is a true value.

Will encrypt if secret is defined.

deserialize - deserialize reference
  $deserialized = $obj->deserialize($serialized);

Reverses the process of serialization and returns a copy of the original serialized reference.

freeze - synonym for serialize
  $serialized = $obj->freeze({a => [1,2,3],b => 5});
thaw - synonym for deserialize
  $deserialized = $obj->thaw($serialized);
secret - specify secret for use with encryption
  $obj->secret('mysecret');

Changes setting of secret for the Data::Serializer object. Can also be set in the constructor. If specified than the object will utilize encryption.

portable - hex encodes/decodes serialized data

Aids in the portability of serialized data.

compress - compression of data

Compresses serialized data. Default is not to use it.

serializer - change the serializer

Currently have 6 supported serializers: Storable, FreezeThaw, Data::Denter, Config::General, YAML and Data::Dumper. Default is to use Data::Dumper.

Each serializer has its own caveat's about usage especially when dealing with cyclical data structures or CODE references. Please see the appropriate documentation in those modules for further information.

cipher - change the cipher method

Utilizes Crypt::CBC and can support any cipher method that it supports.

digester - change digesting method

Uses Digest so can support any digesting method that it supports. Digesting function is used internally by the encryption routine as part of data verification.

serializer_token - add usage hint to data

Data::Serializer prepends a token that identifies what was used to process its data. This is used internally to allow runtime determination of how to extract Serialized data. Disabling this feature is not recommended.

options - pass options through to underlying serializer

Currently is only supported by Config::General.

  my $obj = Data::Serializer->new(serializer=>'Config::General',
                                                options    => {
                                                  -LowerCaseNames       => 1,
                                                  -UseApacheInclude     => 1,
                                                  -MergeDuplicateBlocks => 1,
                                                  -AutoTrue             => 1,
                                                  -InterPolateVars      => 1
                                                },
                                              ) or die "$!\n";

TRANSIENCE

Data::Serializer is aware of Tie::Transient. What this means is that you use Tie::Transient as normal, and when your object is serialized, the transient components will be automatically removed for you.

Thanks to Brian Moseley <bcm@maz.org> for the Tie::Transient module, and recomendations on how to integrate it into Data::Serializer.

Tie::Transient is not yet on CPAN, but can be downloaded directly from Brian's site here: http://www.maz.org/perl/Tie-Transient-0.05.tar.gz

TODO

EXAMPLES

AUTHOR

Neil Neely <neil@frii.net>.

Serializer code inspired heavily by the work of Gurusamy Sarathy and Raphael Manfredi in the MLDBM module.

COPYRIGHT

Copyright (c) 2001,2002 Front Range Internet, Inc.

Copyright (c) 2001,2002 Neil Neely. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

perl(1), Data::Dumper(3), Data::Denter(3), Storable(3), FreezeThaw(3), Config::General(3), YAML(3), MLDBM(3), Tie::Transient(3).