Config-Any
view release on metacpan or search on metacpan
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 )