NAME
Storable::AMF0 - serializing/deserializing AMF0 data
SYNOPSIS
use Storable::AMF0 qw(freeze thaw); # or use Storable::AMF3 qw(freeze thaw) for AMF3 format
$amf0 = freeze($perl_object);
$perl_object = thaw($amf0);
# Store/retrieve to disk amf0 data
store $perl_object, 'file';
$restored_perl_object = retrieve 'file';
use Storable::AMF0 qw(nstore freeze thaw dclone);
# Network order: Due to spec of AMF0 format objects (hash, arrayref) stored in network order.
# and thus nstore and store are synonyms
nstore \%table, 'file';
$hashref = retrieve('file');
# Advisory locking
use Storable::AMF0 qw(lock_store lock_nstore lock_retrieve)
lock_store \%table, 'file';
lock_nstore \%table, 'file';
$hashref = lock_retrieve('file');
# Deparse one object
use Storable::AMF0 qw(deparse_amf);
my( $obj, $length_of_packet ) = deparse_amf( my $bytea = freeze($a1) . freeze($a) ... );
- or -
$obj = deparse_amf( freeze($a1) . freeze($a) ... );
# JSON::XS boolean support
use JSON::XS;
$json = encode_json( thaw( $amf0, parse_serializator_option( 'json_boolean' ))); #
$amf_with_boolean = freeze( $JSON::XS::true or $JSON::XS::false);
# boolean support;
use boolean;
$amf_with_boolean = freeze( boolean( 1 or '' ));
# Options support
use Storable::AMF[03] qw(parse_option parse_serializator_option);
my $options = parse_serializator_option( "raise_error, prefer_number, json_boolean" ); # or parse
$obj = thaw( $amf, $options );
$amf = freeze( $obj, $options );
DESCRIPTION
This module is (de)serializer for Adobe's AMF0/AMF3 (Action Message Format ver 0-3). This is only module and it recognize only AMF0 data. Almost all function implemented in C for speed. And some cases faster then Storable( for me always)
EXPORT
None by default.
FUNCTIONS
- freeze($obj [, $option ]) --- Serialize perl object($obj) to AMF0, and return AMF0 data
- thaw($amf0, [, $option ]) --- Deserialize AMF0 data to perl object, and return the perl object
- store $obj, $file --- Store serialized AMF0 data to file
- nstore $obj, $file --- Same as store
- retrieve $obj, $file --- Retrieve serialized AMF0 data from file
- lock_store $obj, $file --- Same as store but with Advisory locking
- lock_nstore $obj, $file --- Same as lock_store
- lock_retrieve $file --- Same as retrieve but with advisory locking
- dclone $file --- Deep cloning data structure
- ref_clear $obj --- recurrent refs clearing . (Succefully destroy recurrent objects with circular links too)
- ref_lost_memory $obj --- test if object contain lost memory fragments inside. (Example do { my $a = []; @$a=$a; $a})
- deparse_amf $bytea --- deparse from bytea one item Return one object and number of bytes readed if scalar context return object
- parse_serializator_option( $option_string ) / parse_option( $option_string ) --- generate option scalar from string usefull for some options of thaw/freeze/deparse_amf
OPTIONS There are several options supported
- strict
-
--- strict mode ( DoS related option)
- json_boolean
-
--- support for JSON::XS boolean
- prefer_number
-
--- try freezing double val scalars as numbers
- millisecond_date (depreciated don't use it)
- raise_error
- utf8_decode
- utf8_encode
LIMITATION
At current moment and with restriction of AMF0/AMF3 format referrences to function, filehandles are not serialized, and can't/may not serialize tied variables.
FEATURES
Due bug of Macromedia 'XML' type not serialized properly (it loose all atributes for AMF0)
For AMF0 has to use XMLDocument type.
SEE ALSO
Data::AMF, Storable, Storable::AMF3
AUTHOR
Anatoliy Grishaev, <grian at cpan dot org>
THANKS
Alberto Reggiori. ( basic externalized object support )
Adam Lounds. ( tests and some ideas and code for boolean support )
COPYRIGHT AND LICENSE
Copyright (C) 2011 by A. G. Grishaev
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.8 or, at your option, any later version of Perl 5 you may have available.