Config-Any

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

NAME
    Config::Any - Load configuration from different file formats,
    transparently

SYNOPSIS
        use Config::Any;

        my $cfg = Config::Any->load_stems({stems => \@filepath_stems, ... });
        # or
        my $cfg = Config::Any->load_files({files => \@filepaths, ... });

        for (@$cfg) {
            my ($filename, $config) = %$_;
            $class->config($config);
            warn "loaded config from file: $filename";
        }

DESCRIPTION
    Config::Any provides a facility for Perl applications and libraries to
    load configuration data from multiple different file formats. It
    supports XML, YAML, JSON, Apache-style configuration, Windows INI files,
    and even Perl code.

    The rationale for this module is as follows: Perl programs are deployed
    on many different platforms and integrated with many different systems.
    Systems administrators and end users may prefer different configuration
    formats than the developers. The flexibility inherent in a multiple
    format configuration loader allows different users to make different
    choices, without generating extra work for the developers. As a
    developer you only need to learn a single interface to be able to use
    the power of different configuration formats.

INTERFACE
  load_files( \%args )
        Config::Any->load_files( { files => \@files } );
        Config::Any->load_files( { files => \@files, filter  => \&filter } );
        Config::Any->load_files( { files => \@files, use_ext => 1 } );
        Config::Any->load_files( { files => \@files, flatten_to_hash => 1 } );

    load_files() attempts to load configuration from the list of files
    passed in the "files" parameter, if the file exists.

    If the "filter" parameter is set, it is used as a callback to modify the
    configuration data before it is returned. It will be passed a single
    hash-reference parameter which it should modify in-place.

    If the "use_ext" parameter is defined, the loader will attempt to parse
    the file extension from each filename and will skip the file unless it
    matches a standard extension for the loading plugins. Only plugins whose
    standard extensions match the file extension will be used. For
    efficiency reasons, its use is encouraged, but be aware that you will
    lose flexibility -- for example, a file called "myapp.cfg" containing
    YAML data will not be offered to the YAML plugin, whereas "myapp.yml" or
    "myapp.yaml" would be.

    When the "flatten_to_hash" parameter is defined, the loader will return
    a hash keyed on the file names, as opposed to the usual list of
    single-key hashes.

    load_files() also supports a 'force_plugins' parameter, whose value
    should be an arrayref of plugin names like "Config::Any::INI". Its
    intended use is to allow the use of a non-standard file extension while
    forcing it to be offered to a particular parser. It is not compatible



( run in 1.145 second using v1.01-cache-2.11-cpan-39bf76dae61 )