Анатолий Гришаев


Storable::AMF0 - Perl extension for serialize/deserialize AMF0/AMF3 data


  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) ... );


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)


  None by default.


freeze($obj) --- Serialize perl object($obj) to AMF0, and return AMF0 data
thaw($amf0) --- 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 recurent objects with circular liks 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


  Storable::AMF0 is currently is alpha development stage. 


  Storable::AMF0 is currently at alpha development stage. 


At current moment and with restriction of AMF0/AMF3 format referrences to scalar are not serialized, and can't/ may not serialize tied variables.


        Due bug of Macromedia 'XML' type not serialized properly (it loose all atributes for AMF0) 
        For AMF0 has to use XMLDocument type.


Data::AMF, Storable, Storable::AMF3


Anatoliy Grishaev, <grian at cpan dot org>


Copyright (C) 2008 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.