# NAME config - Perl module constant configurator # VERSION 1.0 # SYNOPSIS File lib/My/Query.pm: package My::Query; use config DB_NAME => "mizericordia"; use config DB_HOST => "192.168.0.1"; use config { DB_USER => "root", DB_PASSWORD => "pass", }; our $connect = "mysql://" . DB_USER . ":" . DB_PASSWORD . "\@" . DB_HOST . "/" . DB_NAME; 1; File .config.pm: package config; config_module 'My::Query' => { DB_HOST => "mydb.com", }; 1; What happened: use lib 'lib'; use My::Query; $My::Query::connect # \> mysql://root:pass@mydb.com/mizericordia # DESCRIPTION Config make constant as `use constant`, but it values substitutes on values from local config if exists. Local config is the **./.config.pm** in root folder of the project. The project must start from this folder in order for the **./.config.pm** to be read. # METHODS ## import ($name, \[$value\]) # One constant use config A => 10; # Multiconstants: use config { B => 3, C => 4, }; A # => 10 B # => 3 C # => 4 # And at runtime: config->import('D' => 5); D() # => 5 # without params use config; ## config\_module MODULE => {...} Subroutine use in local config (**./.config.pm**) for configure perl module. To do this, the config must have `package config`. # config_module at runtime set only runtime constants config::config_module 'main' => { D => 10, X => 12, }; config->import('X' => 15); D() # => 5 X() # => 12 # INSTALL Add to **cpanfile** in your project: on 'test' => sub { requires 'config', git => 'https://github.com/darviarush/perl-config.git', ref => 'master', ; }; And run command: $ sudo cpm install -gvv # AUTHOR Yaroslav O. Kosmina L[mailto:dart@cpan.org](mailto:dart@cpan.org) # LICENSE ⚖ **GPLv3**