您好我正在尝试使用Config::Simple
实施配置文件。
因为我能够解析输入并将参数写入文件。
我的配置文件是
new.conf
[Section1]
param1=value1
param2=value2
[Section2]
param1=value1
param2=value2
[Section3]
param1=value1
param2=value2
此外我想制作一个单独的分段文件,即在上面的例子中我想创建3个文件(因为有3个部分) 在第一个文件中我想要一些这样的
section1.conf
[Section1]
param1=value1
param2=value2
在第二个文件中 section2.conf
[Section2]
param1=value1
param2=value2
..等等
我想首先我要解析特定的部分和相应的参数,然后将其写入新文件。如果我是,请纠正我 想错了。
应该动态创建文件,因为每次提交表单后文件结构可能会有所不同。
我正在试着这样做,请建议我该怎么做。
我的代码:
use Config::Simple;
$cfg = new Config::Simple(syntax=>'ini');
if($ENV{'REQUEST_METHOD'} eq 'POST')
{
&myReadParse();
my $cfg = Config::Simple->import_from('new.conf', \my %config) or die Config::Simple->error();
my %write_config= %config;
foreach my $config_var (sort keys %write_config)
{
foreach my $form_var ( @form_input )
{
local ($key, $value) = split(/=/, $form_var );
$key =~ s/^\s+|\s+$//g;
$value =~ s/^\s+|\s+$//g;
if ($config_var eq $key)
{
$cfg->param($config_var, $value);
}
}
}
$cfg->write("new.conf");
}
任何有助于提前感谢的帮助。
答案 0 :(得分:0)
请尝试使用Config::Tiny
:
#!/usr/bin/env perl
use Config::Tiny;
use Storable qw( dclone );
my $conf = Config::Tiny->read('new.conf');
for my $section (sort keys %$conf) {
# Make a Deep Copy of the Config::Tiny object
my $copy = dclone($conf);
# Delete all the other sections
delete $copy->{$_} for (grep { $section ne $_ } keys %$conf);
# Write out section to new file
my $new_conf = lc($section) . '.conf';
$copy->write( $new_conf );
}
产生:
section1.conf
[Section1]
param1=value1
param2=value2
section2.conf
[Section2]
param1=value1
param2=value2
section3.conf
[Section3]
param1=value1
param2=value2
以下是使用Config::Simple
的另一个版本。在这里,我们需要深入了解Config :: Simple对象的内容,这是不优雅的。
#!/usr/bin/env perl
use Config::Simple;
use Storable qw( dclone );
my $conf = Config::Simple->import_from('new.conf');
my @sections = keys %{$conf->{_DATA}};
for my $section ( @sections ) {
# Make a Deep Copy of the Config::Simple object
my $copy = dclone($conf);
# Delete all the other sections
delete $copy->{_DATA}->{$_} for (grep { $section ne $_ } @sections);
# Write out section to new file
my $new_conf = lc($section) . '.conf';
$copy->write( $new_conf );
}
生成这样的部分文件:
section1.conf
; Config::Simple 4.58
; Mon Aug 10 21:13:43 2015
[Section1]
param2=value2
param1=value1