NAME
Data::Serializer::Raw - Provides unified raw interface to perl serializers
SYNOPSIS
$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
);
"$deserialized->{b}\n"
;
DESCRIPTION
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
=> {},
);
new is 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"
;
or
my
$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 serialize method 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
);
or
my
$ref
=
$obj
->retrieve(
$fh
);
Reads first line of supplied file or filehandle and returns it deserialized.
AUTHOR
Neil Neely <neil@neely.cx>.
http://neil-neely.blogspot.com/
BUGS
Please report all bugs here:
http://rt.cpan.org/Public/Dist/Display.html?Name=Data-Serializer
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.
SEE ALSO
perl(1), Data::Serializer(3).