Perl Config :: Simple:在文件中添加额外的控制字符(\\ n)

时间:2019-04-25 06:56:27

标签: perl configuration

我有一个程序,该程序必须从perl脚本读取配置(属性)文件。我正在使用Config :: Simple进行读写操作。

我的问题是,我能够在属性文件中进行读写。 但是,当我尝试更新属性值中的config值之一时,它添加了控制字符(\ n),并且还想删除由“ cfg-write()”方法创建的默认标头。我尝试搜索论坛并提到了API,而不是信息。有人可以给点光吗?

当我尝试调用日期/时间函数时,它没有添加任何额外的字符。但是,当我尝试执行svn命令时,它会添加额外的字符。我尝试在控制台上使用打印命令,它可以完美地运行而无需控制字符

my $buildDate = strftime('%d/%m/%y %H:%M:%S',localtime);
my $rev = `svn info --show-item revision`;
my $cfg = Config::Simple->import_from('temp.properties', \my %Config);
$cfg->param("builddate", $buildDate);
$cfg->param("revision", $rev);
$cfg->write() or die $cfg->error();

属性文件:

; Config::Simple 4.58
; Thu Apr 25 10:59:10 2019

version=Build Automation
revision=14794\\n
builddate=25/04/19 10:59:10

预期结果: 1)需要删除版本配置参数中的控制字符(\ n) 2)cfg-write或cfg-autosave()将默认标头写入文件,我想删除/忽略该标头

实际结果: 1)添加了额外的控制字符(\ n) 2)默认头添加到属性文件中

1 个答案:

答案 0 :(得分:1)

感谢@choroba。出色的投入

我尝试使用 Config :: Properties :: Commons

 my $cpc = Config::Properties::Commons->new();
     $cpc->load('temp.properties');
     # Access
     $cpc->set_property( builddate => 'Updated' );
     $cpc->save('temp.properties');

Code for **Config::Simple**

    my $rev = `svn info --show-item revision /home/sudhir/Work/Workspaces/Eclipse/trunk`;

        chomp($ver);
        my $cfg = Config::Simple->import_from('easycare.properties', \my %Config) or 
     die print "ERROR: Not able to open easycare.properties file";


    $cfg->param("builddate", $buildDate);
    $cfg->param("revision", $rev);
    $cfg->param("version", $ver);
    $cfg->write() or die $cfg->error();