NAME Config::ENV - Various config determined by %ENV SYNOPSIS package MyConfig; use Config::ENV 'PLACK_ENV'; # use $ENV{PLACK_ENV} to determine config common +{ name => 'foobar', }; config development => +{ dsn_user => 'dbi:mysql:dbname=user;host=localhost', }; config test => +{ dsn_user => 'dbi:mysql:dbname=user;host=localhost', }; config production => +{ dsn_user => 'dbi:mysql:dbname=user;host=127.0.0.254', }; config production_bot => +{ parent('production'), bot => 1, }; # Use it use MyConfig; MyConfig->param('dsn_user'); #=> ... DESCRIPTION Config::ENV is for switching various configurations by environment variable. CONFIG DEFINITION use this module in your config package: package MyConfig; use Config::ENV 'FOO_ENV'; common +{ name => 'foobar', }; config development => +{}; config production => +{}; 1; common($hash) Define common config. This $hash is merged with specific environment config. config($env, $hash); Define environment config. This $hash is just enabled in $env environment. EXPORT You can specify default export name in config class. If you specify 'exports' option as following: package MyConfig; use Config::ENV 'FOO_ENV', exports => 'config'; ...; and use it with 'config' function. package Foobar; use MyConfig; # exports 'config' function config->param('...'); METHODS config->param($name) Returns config variable named $name. $guard = config->local(%hash) This is for scope limited config. You can use this when you use other values in temporary. Returns guard object. is config->param('name'), 'original value'; { my $guard = config->local(name => 'localized'); is config->param('name'), 'localized'; }; is config->param('name'), 'original value'; config->env Returns current environment name. config->current Returns current configuration as HashRef. AUTHOR cho45 SEE ALSO LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.