Чтение и запись в YML конфиг файлы в perl

Имеем конфиг в YAML формате :

config:
mysql1:
user: myuser1
password: mypassword1
mysql2:
user: myuser2
password: mypassword2

Требуется посмотреть и изменить нужный параметр. Допустим, требуется изменить password у user в секции mysql1 . Для этого в perl существует библиотека для стандарта YAML.

Фактически, конфиг представляет собой хеш массив, поэтому yaml распарсивает данные.


#!/usr/bin/perl

use strict;
use warnings;

use YAML qw(LoadFile Dump); # подключаем нужный модуль с нужными функциями

my $config = LoadFile('config.yml'); # загружаем конфиг
my $user1_pass = $config->{'config'}->{mysql1}->{password}; # находим значение по ключу
print "$user1_pass";

Далее, после того, как мы нашли нужный параметр, нам требуется его перезаписать. Для этого в имеющемся у нас хеш-массиве меняем значение и записываем новый хеш массив в файл.


#!/usr/bin/perl

use strict;
use warnings;

use YAML qw(LoadFile Dump); # подгружаем нужный модуль с нужными параметрами

my $config = LoadFile('config.yml'); # загружаем конфиг
$config->{'config'}->{mysql1}->{password} = '123123'; # меняем значение ключа
open F, '>', 'config.yml'; # открываем файл на запись
print F Dump($config); # пишем output в хендлер файла
close F; # закрываем хэндлер

Tags: ,

Leave a Reply