The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

config - Perl module constant configurator

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;

.config.pm file:

        package config;
        
        config 'My::Query' => (
            DB_HOST => "mydb.com",
        );
        
        1;

What should happen:

        use lib 'lib';
        use My::Query;
        
        $My::Query::connect # \> mysql://root:pass@mydb.com/mizericordia

DESCRIPTION

use config creates a constant in the same way as use constant, but takes the value from the project's local config file if one is specified there.

The config file ./.config.pm is located in the root directory of the project.

The current directory in the project must correspond to the project root.

Since the config.pm pragma module is overridden on <metacpan.org> by the config.pod file from the WordNet-Similarity package, this manual (config::Manual) is used.

METHODS

import ($name, [$value])

        # Одна константа
        use config A => 10;
        
        # Много констант:
        use config {
            B => 3,
            C => 4,
        };
        
        A # => 10
        B # => 3
        C # => 4
        
        # И в рантайме:
        config->import('D' => 5);
        
        D() # => 5
        
        # Без параметров:
        use config;

config MODULE => (...)

The function is used in the config file (./.config.pm) to configure Perl modules. For config it should start with package config;.

        config::config 'main' => (
            D => 10,
            X => 12,
        );
        
        config->import('X' => 15);
        
        D() # => 5
        X() # => 12

AUTHOR

Yaroslav O. Kosmina mailto:dart@cpan.org

LICENSE

Perl5

COPYRIGHT

The config module is copyright (c) 2023 Yaroslav O. Kosmina. Rusland. All rights reserved.