# 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**
