NAME
OpenInteract::Config::Ini - Read/write INI-style (++) configuration files
SYNOPSIS
my $config = OpenInteract::Config::Ini->new({ filename => 'myconf.ini' });
print "Main database driver is:", $config->{db_info}{main}{driver}, "\n";
$config->{db_info}{main}{username} = 'mariolemieux';
$config->write_config;
DESCRIPTION
This is a very simple implementation of a configuration file reader/writer that preserves comments and section order, enables multivalue fields and one or two-level sections.
Yes, there are other configuration file modules out there to manipulate INI-style files. But this one takes several features from them while providing a very simple and uncluttered interface.
From Config::IniFiles we take comment preservation and the idea that we can have multi-level sections like:
[Section subsection]
From Config::Ini and AppConfig we borrow the usage of multivalue keys:
item = first item = second
Example
Given the following configuration in INI-style:
[datasource]
default_connection_db = main
db = main
db = other
[db_info main]
db_owner =
username = captain
password = whitman
dsn = dbname=usa
db_name =
driver_name = Pg
sql_install =
long_read_len = 65536
long_trunc_ok = 0
[db_info other]
db_owner =
username = tyger
password = blake
dsn = dbname=britain
db_name =
driver_name = Pg
sql_install =
long_read_len = 65536
long_trunc_ok = 0
You would get the following Perl data structure:
$config = {
datasource => {
default_connection_db => 'main',
db => [ 'main', 'other' ],
},
db_info => {
main => {
db_owner => undef,
username => 'captain',
password => 'whitman',
dsn => 'dbname=usa',
db_name => undef,
driver_name => 'Pg',
sql_install => undef,
long_read_len => '65536',
long_trunc_ok => '0',
},
other => {
db_owner => undef,
username => 'tyger',
password => 'blake',
dsn => 'dbname=britain',
db_name => undef,
driver_name => 'Pg',
sql_install => undef,
long_read_len => '65536',
long_trunc_ok => '0',
},
},
};
'Global' Key
Anything under the 'Global' key in the configuration will be available under the configuration object root. For instance:
[Global]
DEBUG = 1
will be available as:
$CONFIG->{DEBUG}
SEE ALSO
COPYRIGHT
Copyright (c) 2001-2002 intes.net, inc.. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHORS
Chris Winters <chris@cwinters.com>