config_data - Query or change configuration of Perl modules


# Get config/feature values config_data --module Foo::Bar --feature bazzable config_data --module Foo::Bar --config magic_number # Set config/feature values config_data --module Foo::Bar --set_feature bazzable=1 config_data --module Foo::Bar --set_config magic_number=42 # Print a usage message config_data --help


The \f(CW\*(C`config_data\*(C'\fR tool provides a command-line interface to the configuration of Perl modules. By \*(L"configuration\*(R", we mean something akin to \*(L"user preferences\*(R" or \*(L"local settings\*(R". This is a formalization and abstraction of the systems that people like Andreas Koenig (\f(CW\*(C`CPAN::Config\*(C'\fR), Jon Swartz (\f(CW\*(C`HTML::Mason::Config\*(C'\fR), Andy Wardley (\f(CW\*(C`Template::Config\*(C'\fR), and Larry Wall (perl's own Config.pm) have developed independently.

The configuration system emplyed here was developed in the context of \f(CW\*(C`Module::Build\*(C'\fR. Under this system, configuration information for a module \f(CW\*(C`Foo\*(C'\fR, for example, is stored in a module called \f(CW\*(C`Foo::ConfigData\*(C'\fR) (I would have called it \f(CW\*(C`Foo::Config\*(C'\fR, but that was taken by all those other systems mentioned in the previous paragraph...). These \f(CW\*(C`...::ConfigData\*(C'\fR modules contain the configuration data, as well as publically accessible methods for querying and setting (yes, actually re-writing) the configuration data. The \f(CW\*(C`config_data\*(C'\fR script (whose docs you are currently reading) is merely a front-end for those methods. If you wish, you may create alternate front-ends.

The two types of data that may be stored are called \f(CW\*(C`config\*(C'\fR values and \f(CW\*(C`feature\*(C'\fR values. A \f(CW\*(C`config\*(C'\fR value may be any perl scalar, including references to complex data structures. It must, however, be serializable using \f(CW\*(C`Data::Dumper\*(C'\fR. A \f(CW\*(C`feature\*(C'\fR is a boolean (1 or 0) value.


This script functions as a basic getter/setter wrapper around the configuration of a single module. On the command line, specify which module's configuration you're interested in, and pass options to get or set \f(CW\*(C`config\*(C'\fR or \f(CW\*(C`feature\*(C'\fR values. The following options are supported:

module 4 Specifies the name of the module to configure (required).

feature 4 When passed the name of a \f(CW\*(C`feature\*(C'\fR, shows its value. The value will be 1 if the feature is enabled, 0 if the feature is not enabled, or empty if the feature is unknown. When no feature name is supplied, the names and values of all known features will be shown.

config 4 When passed the name of a \f(CW\*(C`config\*(C'\fR entry, shows its value. The value will be displayed using \f(CW\*(C`Data::Dumper\*(C'\fR (or similar) as perl code. When no config name is supplied, the names and values of all known config entries will be shown.

set_feature 4 Sets the given \f(CW\*(C`feature\*(C'\fR to the given boolean value. Specify the value as either 1 or 0.

set_config 4 Sets the given \f(CW\*(C`config\*(C'\fR entry to the given value.

eval 4 If the \f(CW\*(C`--eval\*(C'\fR option is used, the values in \f(CW\*(C`set_config\*(C'\fR will be evaluated as perl code before being stored. This allows moderately complicated data structures to be stored. For really complicated structures, you probably shouldn't use this command-line interface, just use the Perl API instead.

help 4 Prints a help message, including a few examples, and exits.


Ken Williams,


Copyright (c) 1999, Ken Williams. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


Module::Build (3), perl (1).