Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ini文件使用perl更新_Perl_Ini - Fatal编程技术网

Ini文件使用perl更新

Ini文件使用perl更新,perl,ini,Perl,Ini,如何在不修改任何其他内容的情况下更新ini文件中参数的值? 目前我正在使用setVal(),如下所示,但这会在更新其他参数值时删除一个参数 sub setVal { my $section = shift; my $parameter = shift; my $value = shift; my $ini_path = "C:\\MyFolder\\Ini.ini"; my $inicfg = Config::IniFiles->new( -file =&g

如何在不修改任何其他内容的情况下更新ini文件中参数的值?
目前我正在使用setVal(),如下所示,但这会在更新其他参数值时删除一个参数

sub setVal
{
   my $section = shift;
   my $parameter = shift;
   my $value = shift;

   my $ini_path = "C:\\MyFolder\\Ini.ini";
   my $inicfg = Config::IniFiles->new( -file => $ini_path );

   $inicfg -> setval($section,$parameter,$value);
   $inicfg -> WriteConfig($ini_path);
}

这似乎和我预期的一样有效

$ cat my.ini
[section]
name=dave
foo=bar

[another section]
stuff=random

$ cat changeini 
#!/usr/bin/perl

use strict;
use warnings;
use 5.010;

use Config::IniFiles;

my $cfg = Config::IniFiles->new( -file => 'my.ini' );

say $cfg->val('section', 'foo');

$cfg->setval('section', 'foo', 'baz');

say $cfg->val('section', 'foo');

$cfg->WriteConfig('my.ini');

$ ./changeini 
bar
baz

$ cat my.ini
[section]
name=dave
foo=baz

[another section]
stuff=random

如果您得到了不同的结果,请告诉我们您的不同之处。

您能展示一下您使用的代码吗?如果不看代码,我们(通常)无法猜测问题出在哪里。我使用的方法与上面的代码片段中所示的类似,那么您看到了什么不同的行为?请准确点。