Mark Overmeer > XML-Compile-Dumper-0.13 > XML::Compile::Dumper



Annotate this POD

View/Report Bugs
Module Version: 0.13   Source   Latest Release: XML-Compile-Dumper-0.14


XML::Compile::Dumper - Remember precompiled XML processors


 # create readers and writers or soap things
 my $reader = $schema->compile(READER => '{myns}mytype');
 my $writer = $schema->compile(WRITER => ...);

 # then dump them into a package
 my $dumper = XML::Compile::Dumper->new
   (package => 'My::Package', filename => 'My/');
 $dumper->freeze(foo => $reader, bar => $writer);

 # later, they can get recalled using
 use My::Package;
 my $hash = foo($xml);
 my $doc  = bar($doc, $xml);


This module simplifies the task of saving and loading pre-compiled translators. Schema's can get huge, and when you are not creating a daemon to do the XML communication, you may end-up compiling and interpreting these large schemas often, just to be able to process simple data-structures.

Based on the excellent module Data::Dump::Streamer, this module helps you create standard Perl packages which contain the reader and writer code references.

WARNING: this feature was introduced in release 0.17. Using perl 5.8.8, libxml 2.6.26, XML::LibXML 2.60, and Data::Dump::Streamer 2.03, Perl complains about "PmmREFCNT_dec: REFCNT decremented below 0! during global destruction." when the tests are run. This bug can be anywhere. Therefore, these tests are disabled by default in t/ If you have time, could you please run the tests with $skip_dumper = 0; and report the results to the author?




Finalize the produced file. This will be called automatically if the objects goes out-of-scope.


Create an object which will collect the information for the output file. You have to specify either a filehandle or a filename. A filehandle will be closed after processing.

 Option    --Default
 filehandle  undef
 filename    undef
 package     <required>

. filehandle => IO::Handle

. filename => FILENAME

The file will be written using utf8 encoding, using IO::File. If you want something else, open your filehandle first, and provide that as argument.

. package => PACKAGE

The name-space which will be used: it will produce a package line in the output.



Returns the output file-handle, which you may use to add extensions to the module.




Produce the dump for a group of code references, which will be made available under a normal subroutine name. This method can only be called once.


Prints the header text to the file.


Error: either filename or filehandle required

Error: freeze can only be called once

The various closures may have related variables, and therefore need to be dumped in one go.

Error: freeze needs PAIRS or a HASH

Error: package name required

The perl module which is produced is cleanly encapsulating the produced program text in a perl package name-space. The name has to be provided.

Error: value with $name is not a code reference


This module is part of XML-Compile-Dumper distribution version 0.13, built on March 26, 2010. Website:

All modules in this suite: XML::Compile, XML::Compile::SOAP, XML::Compile::SOAP12, XML::Compile::SOAP::Daemon, XML::Compile::Tester, XML::Compile::Cache, XML::Compile::Dumper, XML::Compile::RPC, and XML::Rewrite, XML::ExistDB, XML::LibXML::Simple.

Please post questions or ideas to the mailinglist at For life contact with other developers, visit the #xml-compile channel on


Copyrights 2007-2010 by Mark Overmeer. For other contributors see ChangeLog.

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

syntax highlighting: