NAME
Config::Options - Module to provide a configuration hash with option to read from file.
SYNOPSIS
use
Config::Options;
my
$options
= Config::Options->new({
verbose
=> 1,
optionb
=> 2,
mood
=>
"sardonic"
});
# Access option as a hash...
"My mode is "
,
$options
->{mood},
"\n"
;
# Merge a hash of options...
$options
->options({
optionc
=> 5,
style
=>
"poor"
});
# Merge options from file
$options
->{optionfile} =
$ENV
{HOME} .
"/.myoptions.conf"
;
$options
->fromfile_perl();
AUTHOR
Edward Allen, ealleniii _at_ cpan _dot_ org
DESCRIPTION
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.
METHODS
- 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();
BUGS
- Deepmerge does not handle nested references well, but it tries.
-
For example, $options->deepmerge($options) is a mess.
- fromfile_perl provides tainted data.
-
Since it comes from an external file, the data is considered tainted.
SEE ALSO
COPYRIGHT
Copyright (c) 2007 Edward Allen III. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the terms of the Artistic License, distributed with Perl.
3 POD Errors
The following errors were encountered while parsing the POD:
- Around line 56:
You forgot a '=back' before '=head1'
- Around line 58:
'=item' outside of any '=over'
- Around line 322:
=back doesn't take any parameters, but you said =back 4