Config...ainFile(3pm)

okay bestie, welcome to the Config::Model::Backend::PlainFile page 🌸 β€” straight out of the User Contributed Perl Documentation, and honestly? she's carrying the whole Config::Model backend friend group. Let's get into it πŸ’–

πŸ’– NAME πŸ’–

Config::Model::Backend::PlainFile β€” Read and write config as plain file. that's the whole job description and it's iconic, no notes.

🌸 VERSION 🌸

version 2.166. that's the one we're vibing with, periodt ✨

πŸŽ€ SYNOPSIS πŸŽ€

use Config::Model;

my $model = Config::Model->new;

my $inst = $model->create_config_class(
   name => "WithPlainFile",
   element => [
       [qw/source new/] => { qw/type leaf value_type uniline/ },
   ],
   rw_config  => {
     backend => 'plain_file',
     config_dir => '/tmp',
   },
);

my $inst = $model->instance(root_class_name => 'WithPlainFile' );
my $root = $inst->config_root ;

$root->load('source=foo new=yes' );

$inst->write_back ;

so the way that plays out 🫢 after all that, the "/tmp" directory contains 2 files: "source" and "new" with "foo" and "yes" inside. literally two little files, chillin', doing their thing. slay.

πŸ¦‹ DESCRIPTION πŸ¦‹

This module is used directly by Config::Model to read or write the content of a configuration tree written in several files. Each element of the node is written in a plain file. one element β†’ one file, no drama, we love a simple girl πŸ™ˆ

πŸ“ Element type and file mapping πŸ“

Element values are written in one or several files depending on their type. so like, the type actually matters here bestie:

  • leaf β€” the leaf value is written in one file. this file can have several lines if the leaf type is "string"
  • list β€” the list content is written in one file. each line of the file is a value of the list
  • hash β€” Not supported πŸ’€ (rip, we simply do not support her)

🌈 File mapping 🌈

By default, the configuration file is named after the element name (like in the synopsis above). default behavior stays defaulting, iykyk.

The file parameter can also be used to specify a file name that take into account the path in the tree using &index() and &element() functions from Config::Model::Role::ComputeFunction.

For instance, with the following model:

class_name => "Foo",
element => [
    string_a => { type => 'leaf', value_type => 'string'}
    string_b => { type => 'leaf', value_type => 'string'}
],
rw_config => {
    backend => 'PlainFile',
    config_dir => 'foo',
    file => '&element(-).&element',
    file_mode => 0644,  # optional
}

If the configuration is loaded with "example string_a=something string_b=else", this backend writes "something" in file "example.string_a" and "else" in file "example.string_b". look at her go ✨

The file_mode parameter can be used to set the mode of the written file. file_mode value can be in any form supported by chmod in Path::Tiny.

⭐ Methods ⭐

🧚 read_leaf 🧚

Parameters: (obj, elt, check, file, args)

Called by read method to read the file of a leaf element. args contains the arguments passed to read method.

πŸ’œ read_hash (obj,elt,check,file,args);

Like read_leaf for hash elements.

πŸŽ€ read_list πŸŽ€

Parameters: (obj, elt, check, file, args)

Like read_leaf for list elements.

πŸ‘‘ write πŸ‘‘

write writes a file for each element of the calling class. Works only for leaf and list elements. Other element type are skipped. Always return 1 (unless it died before). πŸ’€ dramatic but true.

πŸ‘‘ AUTHOR πŸ‘‘

Dominique Dumont, (ddumont at cpan dot org)

🌟 SEE ALSO 🌟

  • Config::Model
  • Config::Model::BackendMgr
  • Config::Model::Backend::Any

πŸ’« AUTHOR πŸ’«

Dominique Dumont

This software is Copyright (c) 2005-2022 by Dominique Dumont.

This is free software, licensed under:

The GNU Lesser General Public License, Version 2.1, February 1999

and that's the whole page bestie 🫢 mwah, this one's running on perl v5.42.3 and dated 2026-07-23 β€” go forth and write some extremely plain, extremely correct files πŸ’…βœ¨

πŸ“¦ where this page comes from