Config::Options - module to provide a configuration hash with option to read
from file.
use Config::Options;
my $options = Config::Options->new({ verbose => 1, optionb => 2, mood => "sardonic" });
# Access option as a hash...
print "My mode is ", $options->{mood}, "\n";
# Merge a hash of options...
$options->options({ optionc => 5, style => "poor"});
# Merge options from file
$options->options("optionfile", $ENV{HOME} . "/.myoptions.conf");
$options->fromfile_perl();
Edward Allen, ealleniii _at_ cpan _dot_ org
The motivation for this module was to provide an option hash with a little bit
of brains. It's pretty simple and used mainly by other modules I have written.
- new()
- Create new options hash. Pass it a hash ref to start with. Please note
that this reference is copied, not blessed.
my $options = Config::Options->new({hash_of_startup_options});
- clone()
- Creates a clone of options object.
my $newoptions = $options->clone();
- options()
- This is a utility function for accessing options. If passed a hashref,
merges it. If passed a scalar, returns the value. If passed two scalars,
sets the option.
my $optionsb = $options->options; # Duplicates option file. Not very usefull.
$options->options($hashref); # Same as $options->merge($hashref);
my $value = $options->options("key") # Return option value.
$options->options("key", "value") # Set an option.
- merge()
- Takes a hashref as argument and merges with current options.
$options->merge($hashref);
- deepmerge()
- Same as merge, except when a value is a hash or array reference. For
example:
my $options = Config::Options->new({ moods => [ qw(happy sad angry) ] });
$options->deepmerge({ moods => [ qw(sardonic twisted) ] });
print join(" ", @{$options->{moods}}), "\n";
The above outputs:
happy sad angry sardonic twisted
- tofile_perl()
- This is used to store options to a file. The file is actually a perl
program that returns a hash. By default uses option 'optionfile' as
filename, or value passed as argument.
If 'optionfile' is an array, then uses LAST option in array as
default.
$options->tofile_perl("/path/to/optionfile");
- fromfile_perl()
- This is used to retreive options from a file. The optionfile is actually a
perl program that returns a hash. By default uses option 'optionfile' as
filename if none is passed.
If 'optionfile' is an array, reads all option files in
order.
Non-existant files are ignored.
Please note that values for this are cached.
$options->fromfile_perl("/path/to/optionfile");
- deserialize($data, $source)
- Takes a scalar as argument and evals it, then merges option. If second
option is given uses this in error message if the eval fails.
my $options = $options->deserialize($scalar, $source);
- serialize()
- Output optons hash as a scalar using Data::Dumper.
my $scalar = $options->serialize();
- del($key)
- Removes $key from options.
- Deepmerge does a poor job at recogniaing recursive loops.
- For example, $options->deepmerge($options) will
really screw things up. As protection, will only loop 20 deep.
- fromfile_perl provides tainted data.
- Since it comes from an external file, the data is considered tainted.
This program is free software; you can redistribute it and/or modify it under
the terms of the Artistic License, distributed with Perl.
Copyright (c) 2007 Edward Allen III. Some rights reserved.