【问题标题】:Change parameter in INI file in Perl在 Perl 中更改 INI 文件中的参数
【发布时间】:2014-05-14 14:58:01
【问题描述】:

我有一个问题。 INI文件中的参数可以更改吗?我知道该值可以更改。但我想知道参数是否也可以更改而不是值。我给你举个例子,这里是INI文件

[section 1]
parameter1 = value1
parameter2 = value2

除了更改值之外,是否有任何 perl 模块或任何东西可以更改 parameter1parameter2 并保留 value1value2不变。如果我们想读取值,我们只需使用这个权限:

my $file = "file directory";
my $Config = Config::Tiny->read($file);

my $read = $Config->{"section 1"}->{"parameter1"};

但是如何只改变parameter1parameter2

这可以吗?我的意思是使用 perl 编程。如果是,任何人都可以向我展示如何执行此操作的示例。虽然它是我的任务。提前谢谢你。

【问题讨论】:

    标签: linux perl ubuntu parameters cgi


    【解决方案1】:

    使用Config::Tiny 非常简单,但无法直接重命名值 - 您必须将值复制到具有新名称的项目,然后删除旧名称。

    这个简短的 Perl 程序演示。它将parameter1 更改为newparam1parameter2 更改为newparam2。新配置被写入不同的文件以方便测试,但您可能希望覆盖原始文件。

    use strict;
    use warnings;
    
    use Config::Tiny;
    
    my $cfg = Config::Tiny->read('file.cfg');
    
    #print $cfg->{'section 1'}{parameter1};
    
    my $section1 = $cfg->{'section 1'};
    
    $section1->{newparam1} = $section1->{parameter1};
    delete $section1->{parameter1};
    
    $section1->{newparam2} = $section1->{parameter2};
    delete $section1->{parameter2};
    
    $cfg->write('newfile.cfg');
    

    输出

    [section 1]
    newparam1=value1
    newparam2=value2
    

    【讨论】:

    • 哇!非常感谢伙计。这为我省去了很多麻烦。 :) @Borodin
    • @user3463422 小注:我可能会 delete 并在同一行中分配以更快地传达您的意图:$section1->{newparam1} = delete $section1->{parameter1};
    • @Miller:我也是,但对于不太熟悉 Perl 的人来说,我更喜欢清晰而不是简洁。
    猜你喜欢
    • 2017-07-07
    • 2012-01-09
    • 2011-03-29
    • 2016-06-05
    • 2011-06-29
    • 2012-04-13
    • 2014-05-14
    • 1970-01-01
    • 2017-12-15
    相关资源
    最近更新 更多