Data::Serializer::Raw3pm
Provides unified raw interface to perl serializers
Usage
use Data::Serializer::Raw;$obj = Data::Serializer::Raw->new();$obj = Data::Serializer::Raw->new(serializer => 'Storable');$serialized = $obj->serialize({a => [1,2,3],b => 5});$deserialized = $obj->deserialize($serialized);print "$deserialized->{b}\n";
Overview
Provides a unified interface to the various serializing modules currently available.
This is a straight pass through to the underlying serializer, nothing else is done. (no encoding, encryption, compression, etc)
Examples
- Please see Data::Serializer::Cookbook(3)
Methods
new- constructor-
$obj = Data::Serializer::Raw->new();$obj = Data::Serializer::Raw->new(serializer => 'Data::Dumper',options => {},);newis the constructor object for Data::Serializer::Raw objects.- •
-
The default serializer is
"Data::Dumper"
- •
-
The default options is
"{}"(pass nothing on to serializer)
serialize- serialize reference-
$serialized = $obj->serialize({a => [1,2,3],b => 5});This is a straight pass through to the underlying serializer, nothing else is done. (no encoding, encryption, compression, etc)
deserialize- deserialize reference-
$deserialized = $obj->deserialize($serialized);This is a straight pass through to the underlying serializer, nothing else is done. (no encoding, encryption, compression, etc)
serializer- change the serializer-
Currently supports the following serializers:
- Bencode(3)
- Convert::Bencode(3)
- Convert::Bencode_XS(3)
- Config::General(3)
- Data::Denter(3)
- Data::Dumper(3)
- Data::Taxi(3)
- FreezeThaw(3)
- JSON(3)
- JSON::Syck(3)
- PHP::Serialization(3)
- Storable(3)
- XML::Dumper(3)
- XML::Simple(3)
- YAML(3)
- YAML::Syck(3)
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.
options- pass options through to underlying serializer-
Currently is only supported by Config::General(3), and XML::Dumper(3).
my $obj = Data::Serializer::Raw->new(serializer => 'Config::General',options => {-LowerCaseNames => 1,-UseApacheInclude => 1,-MergeDuplicateBlocks => 1,-AutoTrue => 1,-InterPolateVars => 1},) or die "$!\n";ormy $obj = Data::Serializer::Raw->new(serializer => 'XML::Dumper',options => { dtd => 1, }) or die "$!\n";
store- serialize data and write it to a file (or file handle)-
$obj->store({a => [1,2,3],b => 5},$file, [$mode, $perm]);or$obj->store({a => [1,2,3],b => 5},$fh);Serializes the reference specified using the
serializemethod and writes it out to the specified file or filehandle.If a file path is specified you may specify an optional mode and permission as the next two arguments. See IO::File for examples.
Trips an exception if it is unable to write to the specified file.
retrieve- read data from file (or file handle) and return it after deserialization-
my $ref = $obj->retrieve($file);ormy $ref = $obj->retrieve($fh);Reads first line of supplied file or filehandle and returns it deserialized.
Copyright and license
Copyright (c) 2011 Neil Neely. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.2 or, at your option, any later version of Perl 5 you may have available.
See http://www.perl.com/language/misc/Artistic.html
Acknowledgements
Peter Makholm took the time to profile Data::Serializer(3) and pointed out the value of having a very lean implementation that minimized overhead and just used the raw underlying serializers.
Releases
7 releases since Debian 7 (Wheezy); the text changed 4 times.