NAME

Config::Layered::Source::ENV - The Environment Variable Source

DESCRIPTION

The ENV source provides configuration through environment variables.

For each top-level key in the default data structure, it checks for the environment variable CONFIG_$KEY where $KEY is the name of the key used in the default data structure.

EXAMPLE

my $config = Config::Layered->load_config( 
    default => {
        foo         => "bar",
        blee        => "baz",
        bax         => {
            chicken => "eggs",
        }
    }
);

With the above configuration, the following keys will be checked:

  • CONFIG_FOO

  • CONFIG_BLEE

  • CONFIG_BAX

The following would *NOT* be checked:

  • CONFIG_CHICKEN

Given the above default data structure, a command run as CONFIG_FOO="Hello World" ./myprogram would result in a $config structure like this:

{
    foo         => "Hello World",
    blee        => "baz",
    bax         => {
        chicken => "eggs",
}

SOURCE ARGUMENTS

  • params is an array ref of keys to check Default: Keys of the default data structure.

  • prefix is a word prepended to your key that is used to check $ENV{$prefix . "_" . uc($key) }.

Example:

Config::Layered->load_config(
    sources => [ 
        'ENV' => { prefix => "MYAPP", params => [qw( bar blee )] } 
    ],
    default => { debug => 0, verbose => 1 },
);

The following keys would be checked:

  • MYAPP_BAR

  • MYAPP_BLEE

  • MYAPP_DEBUG

  • MYAPP_VERBOSE