---
name: "Config::YAML"
section: "3pm"
platform: "linux"
package: "libconfig-yaml-perl"
version: "1.42-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Config::YAML"
---

# Config::YAML(3pm)

Simple configuration automation

## NAME

Config::YAML - Simple configuration automation

## VERSION

Version 1.42

## SYNOPSIS

Config::YAML is a somewhat object-oriented wrapper around the YAML module which makes reading and writing configuration files simple. Handling multiple config files (e.g. system and per-user configuration, or a gallery app with per-directory configuration) is a snap.

```
    use Config::YAML;
    # create Config::YAML object with any desired initial options
    # parameters; load system config; set alternate output file
    my $c = Config::YAML->new( config => "/usr/share/foo/globalconf",
                               output => "~/.foorc",
                               param1 => value1,
                               param2 => value2,
                               ...
                               paramN => valueN,
                             );
    # integrate user's own config
    $c->read("~/.foorc");
    # integrate command line args using Getopt::Long
    $rc = GetOptions ( $c,
                       'param1|p!',
                       'param2|P',
                       'paramN|n',
                     );
    # Write configuration state to disk
    $c->write;
    # simply get params back for use...
    do_something() unless $c->{param1};
    # or get them more OO-ly if that makes you feel better
    my $value = $c->get_param2;
```

## METHODS

### new

Creates a new Config::YAML object.

```
    my $c = Config::YAML->new( config => initial_config,
                               output => output_config
                             );
```

The `"config"` parameter specifies the file to be read in during object creation. It is required, and must be the first parameter given. If the second parameter is `"output"`, then it is used to specify the file to which configuration data will later be written out.  This positional dependency makes it possible to have parameters named "config" and/or "output" in config files.

Initial configuration values can be passed as subsequent parameters to the constructor:

```
    my $c = Config::YAML->new( config => "~/.foorc",
                               foo    => "abc",
                               bar    => "xyz",
                               baz    => [ 1, 2, 3 ],
                             );
```

### get\_\*/set\_\*

If you'd prefer not to directly molest the object to store and retrieve configuration data, autoloading methods of the forms `"get_[param]"` and `"set_[param]"` are provided. Continuing from the previous example:

```
    print $c->get_foo;      # prints "abc"
    my $val = $c->get_quux; # $c->{quux} doesn't exist; returns undef
    $c->set_bar(30);     # $c->{bar} now equals 30, not "xyz"
    my @list = qw(alpha beta gamma);
    $c->set_baz(\@list); # $c->{baz} now a reference to @list
```

### fold

Convenience method for folding multiple values into the config object at once. Requires a hashref as its argument.

```
    $prefs{theme}  = param(theme);
    $prefs{format} = param(format);
    $prefs{sortby} = param(order);
    $c->fold(\%prefs);
    my $format = $c->get_format; # value matches that of param(format)
```

### read

Imports a YAML-formatted config file.

```
    $c->read('/usr/share/fooapp/fooconf');
```

`"read()"` is called at object creation and imports the file specified by `"new(config=>)"`, so there is no need to call it manually unless multiple config files exist.

### write

Dump current configuration state to a YAML-formatted flat file.

```
    $c->write;
```

The file to be written is specified in the constructor call. See the `"new"` method documentation for details.

## DEPRECATED METHODS

These methods have been superseded and will likely be removed in the next release.

### get

Returns the value of a parameter.

```
    print $c->get('foo');
```

### set

Sets the value of a parameter:

```
    $c->set('foo',1);
    my @paints = qw( oil acrylic tempera );
    $c->set('paints', \@paints);
```

## AUTHOR

Shawn Boyette (`"<mdxi@cpan.org>"`)

Original implementation by Kirrily "Skud" Robert (as `"YAML::ConfigFile"`).

## BUGS

- •

  Config::YAML ignores the YAML document separation string (`"---"`) because it has no concept of multiple targets for the data coming from a config file.

Please report any bugs or feature requests to `"bug-yaml-configfile@rt.cpan.org"`, or through the web interface at \<http://rt.cpan.org\>.  I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

## COPYRIGHT & LICENSE

Copyright 2004 Shawn Boyette, All Rights Reserved.

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