Aqui está uma versão perl que usa o módulo Config::Tiny
extremamente simples.
#! /usr/bin/perl
use Config::Tiny;
use strict;
my $cfg = Config::Tiny->read( './backup.ini' );
# create a hash containing changes to [backup]
my %B = ('data_backup_parameter_file' => '/usr/sap/SI1/SYS/global/hdb/opt/hdbconfig/param',
'log_backup_parameter_file' => '/usr/sap/SI1/SYS/global/hdb/opt/hdbconfig/param',
'log_backup_using_backint' => 'true',
);
# loop through the hash and add them to the .ini stored in $cfg
foreach my $b (keys %B) {
$cfg->{'backup'}->{$b} = $B{$b};
};
# create a hash containing changes to [persistence]
my %P = ('basepath_logbackup' => '/usr/sap/SI2/HDB02/backup/log',
'basepath_databackup' => '/usr/sap/SI2/HDB02/backup/data',
'enable_auto_log_backup' => 'yes',
);
# loop through the hash and add them to the .ini stored in $cfg
foreach my $p (keys %P) {
$cfg->{'persistence'}->{$p} = $P{$p};
};
$cfg->write( 'new.ini' );
Config::Tiny
é empacotado para o Debian (e derivados), Fedora, Centos, OpenSuSE e outras distribuições, sendo facilmente instalado usando as ferramentas apropriadas de gerenciamento de pacotes. Em outros sistemas, instale com o CPAN.
Existem vários outros módulos perl para trabalhar com arquivos .ini, alguns com mais recursos, alguns que adotam uma abordagem mais orientada a objetos. Config::Tiny
apenas funciona com um hash e não requer a leitura de páginas de manual ou de manualização tanto quanto as mais complexas, então é bom para uma tarefa simples como essa.