The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.