NAME

Config::IniHashReadDeep - Loads INI config as deep hashes

SYNOPSIS

use Config::IniHashReadDeep 'get_ini_file'; 

my $inihash = get_ini_file( $file );

# or OO style:

use Config::IniHashReadDeep;
use Data::Dumper;

my $ini = Config::IniHashReadDeep->new( $file )->get_ini();

print Dumper($ini);

Example ini file:

[main]
test=5
foo.bar=123
foo.more=77

[digits]
with.counting.000=111
with.counting.001=112
with.counting.002=113


[digitsmore]
with.counting.001.foo=111f
with.counting.003.bar=111b

The example above will print that:

$VAR1 = {                                                                                          
          'digitsmore' => {                                                                        
                            'with' => {                                                            
                                        'counting' => [                                            
                                                        undef,                                     
                                                        {                                          
                                                          'foo' => '111f'
                                                        },
                                                        undef,
                                                        {
                                                          'bar' => '111b'
                                                        }
                                                      ]
                                      }
                          },
          'main' => {
                      'test' => '5',
                      'foo' => {
                                'bar' => '123',
                                'more' => '77'
                              }
                    },
          'digits' => {
                        'with' => {
                                    'counting' => [
                                                    '111',
                                                    '112',
                                                    '113'
                                                  ]
                                  }
                      }
        };

DESCRIPTION

It is a wrapper using Config::INI::Reader, but only for loading and it does something special; using the entries as paths, delimited by '.' and building a hash tree of it.

REQUIRES

Exporter

Config::INI::Reader

METHODS

new

my $inihash = $this->new(%options);

At least it takes a filename.

You may set a different 'delimiter'.

get_ini

my \%inihash = $this->get_ini();

Returns the deep ini

get_ini_file

my \%inihash = get_ini_file($filename);

this is not a method, but a static function, which you can also import like that:

use Config::IniHashReadDeep 'get_ini_file';
my $inihash = get_ini_file( $file );

Paths

The paths used in the ini must be delimited with dotts. But you can set an own delimiter via setting 'delimiter' in the constructor.

Numbers

If you use numbers in the path elements, it will use an ARRAY instead of an HASH to place the value. Please note, that starting with high numbers or leaving gaps in numbers, causes undef entries. It will be up to you later to check wether there is a value or not.

Using numbers gives you the possibility to order entries.

AUTHOR

Andreas Hernitscheck ahernit(AT)cpan.org

LICENSE

You can redistribute it and/or modify it under the conditions of LGPL.