Steffen Schwigon > Config-INI-Serializer > Config::INI::Serializer

Download:
Config-INI-Serializer-0.001.tar.gz

Dependencies

Annotate this POD

Website

View/Report Bugs
Module Version: 0.001   Source  

NAME ^

Config::INI::Serializer - Round-trip INI serializer for nested data

SYNOPSIS ^

Data to INI
 require Config::INI::Serializer;
 my $ini  = Config::INI::Serializer->new;
 my $data = { an         => 'arbitrary',
              collection => [ 'of', 'data', ],
              of         => {
                             arbitrary => 'depth',
                            },
            };
 my $ini_text = $ini->serialize($data);
INI to Data
 $data = $ini->deserialize($ini_text);
No functions are exported.

DESCRIPTION ^

This library is the carved-out INI-file handling from App::Context, namely the essential functions from App:Serializer::Ini and App::Reference.

OH NOES - JET ANOTHR INI MOTULE! - but this one turned out to work better for INI-like nested data serialization where compatibility with other modules is not as important. It is used in the dpath utility.

ACHTUNG! The "round-trip ability" belongs to the data written by the module itself. It does not perfectly keep foreign data structures. Carefully read the CAVEATS section below.

METHODS ^

serialize

Signature: $inidata = $serializer->serialize($data);
Param: $data (ref)
Return: $inidata (text)
Sample Usage:
    $serializer = Config::INI::Serializer->new;
    $inidata = $serializer->serialize($data);

deserialize

Signature: $data = $serializer->deserialize($inidata);
Param: $inidata (text)
Return: $data (ref)
Sample Usage:
    $serializer = Config::INI::Serializer->new;
    $data = $serializer->deserialize($inidata);
    print $serializer->dump($data), "\n";

CAVEATS ^

It is an extended, probably non-standard variant of INI.

It can read most of the other INI formats, but writing is done a bit special to handle nested data.

So using this module is kind of a "one-way ticket to slammertown with no return ticket" aka. vendor lock-in.

It turns ARRAYs into HASHes.

Array indexes are expressed like numbered hash keys:

 [list.0]
 ...
 [list.1]
 ...
 [list.2]
 ...
 [list.10]

which, when re-read, actually become hash keys as there is no more distinction after that. Besides losing the array structure this also loses the order of elements.

It does not handle multiline values correctly.

They will written out straight like this

 key1 = This will be
 some funky multi line
 entry
 key2 = affe

but on reading you will only get key1 = This will be and key2 = affe.

At least it does not choke on the additional multilines, as long as they don't contain a = character.

ACKNOWLEDGEMENTS ^

Stephen Adkins is the author of the original code.

I only carved it out into a separate module to provide it as a light-weight dependency.

AUTHORS ^

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2012 by Stephen Adkins, Steffen Schwigon.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

syntax highlighting: