NAME

Config::Abstraction - Configuration Abstraction Layer

VERSION

Version 0.09

SYNOPSIS

use Config::Abstraction;

my $config = Config::Abstraction->new(
  config_dirs => ['config'],
  env_prefix => 'MYAPP_',
  flatten => 0,
);

my $db_user = $config->get('database.user');

DESCRIPTION

Config::Abstraction is a flexible configuration management layer that sits above Config::* modules. In addition to using drivers to load configuration data from multiple file formats (YAML, JSON, XML, and INI), it also allows levels of configuration, each of which overrides the lower levels. So, it also integrates environment variable overrides and command line arguments for runtime configuration adjustments. This module is designed to help developers manage layered configurations that can be loaded from files and overridden by at run-time for debugging, offering a modern, robust and dynamic approach to configuration management.

KEY FEATURES

SUPPORTED FILE FORMATS

ENVIRONMENT VARIABLE HANDLING

Configuration values can be overridden via environment variables. For instance, if you have a key in the configuration such as database.user, you can override it by setting the corresponding environment variable APP_DATABASE__USER in your system.

For example:

$ export APP_DATABASE__USER="env_user"

This will override any value set for database.user in the configuration files.

COMMAND LINE HANDLING

Configuration values can be overridden via the command line (@ARGV). For instance, if you have a key in the configuration such as database.user, you can override it by adding "APP_DATABASE__USER=other_user_name" to the command line arguments. This will override any value set for database.user in the configuration files.

EXAMPLE CONFIGURATION FLOW

METHODS

new

Constructor for creating a new configuration object.

Options:

get(key)

Retrieve a configuration value using dotted key notation (e.g., 'database.user'). Returns undef if the key doesn't exist.

all()

Returns the entire configuration hash, possibly flattened depending on the flatten option.

The entry config_path contains a colon separated list of the files that the configuration was loaded from.

BUGS

It should be possible to escape the separator character either with backslashes or quotes.

SUPPORT

This module is provided as-is without any warranty.

Please report any bugs or feature requests to bug-config-abstraction at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Config-Abstraction. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

You can find documentation for this module with the perldoc command.

perldoc Config::Abstraction

SEE ALSO

AUTHOR

Nigel Horne, <njh at nigelhorne.com>