The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Config::Simple::App - Perl extension for managing application's configuration settings

SYNOPSIS

    # inside App/Config.pm
    package App::Config;
    use base qw( Config::Simple::App );

    sub _init {
        my $self = shift;

        $self->define("AppPath", "/home/sherzodr/public_html/author/");
        $self->define("AppURL", "http://author.handalak.com/");
        $self->define("CGIPath", $self->AppURL . "cgi-bin/" );
        $self->define("DBDriver");
        $self->define("DBName");
        $self->define("DBUser");
        $self->define("DBPassword");
        $self->define("DBPath", $self->AppPath . "db/");

    }

    1;

    __END__;


    # in your application:
    $config = new App::Config("config.ini");
    print $config->AppPath();
    # etc..

ABSTRACT

    Config::Simple::App is meant to be sub classed by applications' 
    configuration manager class. Relies on Config::Simple to parse
    configuration files into configuration manager instance.

DESCRIPTION

One can, of course, use Config::Simple to manage their applications' configuration files. Although perfect for reading and writing configuration files of various formats, Config::Simple does not provide obvious ways for validating configuration file's attributes and for assigning default attribute values.

Is that such a big deal? Consider the following:

  • Most applications rely on predefined configuration attributes.

  • More often than not configuration files consist of attributes that are rarely modified, but read frequently.

  • All configuration attributes should not be required to be set explicitly. Applications must be able to derive default values for missing attributes, possibly by looking at other attributes.

  • Typos in configuration files must be detected as early as possible. Complex validation routines may be required to validate certain settings (such as a path that doesn't exist, but should).

  • Name based access is sometimes preferred

Config::Simple::App attempts to deliver all the above features to your application

EXPORT

None.

PROGRAMMING STYLE

Config::Simple::App is not meant to be used directly, but through sub classing.

First step in creating a configuration manager class is to subclass Config::Simple::App.

    package App::ConfigManager;
    use base qw( Config::Simple::App );

Config::Simple::App provides new() and define() methods to your configuration class. The next step is to define an _init() routine that gets called by new() after configuration file has been processed. You need to call define() for each attribute that a configuration file can have that is considered valid. This does not mean all those attributes must be present, but can be present.

    sub _init {
        my $self = shift;

        $self->define("Path");
        $self->define("TemplatePath", $self->Path . 'tmpl');
    }

METHODS

new($config_file)
define($attribute)
define($attribute, $default_value)

SEE ALSO

Config::Simple

AUTHOR

Sherzod B. Ruzmetov <sherzodr@localdomain>

COPYRIGHT AND LICENSE

Copyright 2005 by Sherzod B. Ruzmetov

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