'br}

'br}

{\

## NAME

config_data - Query or change configuration of Perl modules

## SYNOPSIS

# 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

## DESCRIPTION

The f(CW*(C`config_data*(C' 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'), Jon Swartz (f(CW*(C`HTML::Mason::Config*(C'), Andy Wardley (f(CW*(C`Template::Config*(C'), and Larry Wall (perl's own Config.pm) have developed independently.

The configuration system employed here was developed in the context of f(CW*(C`Module::Build*(C'. Under this system, configuration information for a module f(CW*(C`Foo*(C', for example, is stored in a module called f(CW*(C`Foo::ConfigData*(C') (I would have called it f(CW*(C`Foo::Config*(C', but that was taken by all those other systems mentioned in the previous paragraph...). These f(CW*(C`...::ConfigData*(C' modules contain the configuration data, as well as publicly accessible methods for querying and setting (yes, actually re-writing) the configuration data. The f(CW*(C`config_data*(C' 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' values and f(CW*(C`feature*(C' values. A f(CW*(C`config*(C' value may be any perl scalar, including references to complex data structures. It must, however, be serializable using f(CW*(C`Data::Dumper*(C'. A f(CW*(C`feature*(C' is a boolean (1 or 0) value.

## USAGE

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' or f(CW*(C`feature*(C' 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', 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' entry, shows its value. The value will be displayed using f(CW*(C`Data::Dumper*(C' (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' to the given boolean value. Specify the value as either 1 or 0.

set_config 4

Sets the given f(CW*(C`config*(C' entry to the given value.

eval 4

If the f(CW*(C`--eval*(C' option is used, the values in f(CW*(C`set_config*(C' 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 s-1APIs0 instead.

help 4

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

## AUTHOR

Ken Williams, kwilliams@cpan.org

## COPYRIGHT

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.

## SEE ALSO

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