++ed by:

1 non-PAUSE user.

Kai Wilker


Config::File::Simple - a module to parse and edit a configuration file


    use Config::File::Simple;

    my $configuration_file = 'path/to/the/config/file';
    my $config = new Config::File::Simple($configuration_file);


Config::File::Simple is a OO module to parse and edit configuration files. The configuration file's syntax is simple:

    variable2 = value \# 2! # This is a comment
    # This is another comment

Special characters mustn't contained in the variable's name. Hashs in value have to be escaped with a backslash: \#, but Config::File::Simple will do this for you (see METHODS).


Parse the config file

Get the value of a variable is simple, too. You can use read() to do this.


    my $value_of_foo = $config->read('foo');

If there's only one variable given, read() will return it's value.

If you give more than one arguments, read() will return a hash with the variables and the values:

    my %hash = $config->read('foo', 'bar', 'quux');
    my $value_of_foo = $hash{'foo'};

Of course you can give arrays as arguments:

    my @array = qw/foo bar quux/;
    my %hash = $config->read(@array);
    my $value_of_foo = $hash{'foo'};

If there are escaped hash (\#) in the value, read() will unescape them for you:


This is the config file:

    foo = bar
    quux = qu \#u ux

And this is the Perl script:

    print $config->read('quux');

The output will be:

    qu #u ux

Edit the config file

There are two methods, to create and edit the configuration file: set() and add_comment().


set() is a wrapper which uses the commands add() and change(). It changes the value of a variable. If the variable doesn't exist, it will add this variable.

Usage of set():

    my $variable = 'foo';
    my $value = 'bar';
    if ($config->set($variable, $value)) {
        print "Success!\n";

Now the variable foo has got the value bar.

You can't give more than one arguments, and so you can't use it in list context. I hope this will be fixed in a new version


add_comment() adds a comment at the end of the file.


    my $comment = 'This is a test!';
    if ($config->add_comment($comment)) {
        print "Success!\n";

Now there is a new line at the end of the file:

    # This is a test!

In list context add_comment() will add all comments:

    my @comments = ('Comment 1', 'Comment 2');
    if ($config->add_comment(@comments)) {
        print "Success!\n";

Now there are these two lines at the end of the file:

    # Comment 1
    # Comment 2


The module id developed by Kai Wilker. You can send questions to this module to kaiw@cpan.org.


Feel free to send bug-reports to kaiw@cpan.org.


See also Config::File, Config::Simple, Config::Any.


Copyright (C) 2008 by Kai Wilker. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.