我无法打印整行,因为我尝试使用Config:Ini操作解析ini文件,它的最后一部分,我相信数组将拥有整行而不仅仅是键,我肯定会丢失这里的东西
输入
[DomainCredentials]
broker=SERVER
domain=CUSTOMER1
[ProviderCredentials]
Class=A
Routine=B
代码
#!/sbin/perl -w
use lib "/usr/lib/perl5/site_perl";
use lib "/usr/lib/perl5/vendor_perl";
use strict;
use warnings;
use Config::IniFiles;
my $sPPFile="/tmp/config.txt";
my $sysSec="DomainCredentials";
my $cfg = Config::IniFiles->new(-file=> $sPPFile) || die "Could open file $sPPFile\n";
if ($@){
print "Error";
exit 1;
}
my @params_provider = $cfg->Parameters("ProviderCredentials");
foreach (@params_provider){
print $_."\n";
}
输出
Class
Routine
预期产出
Class=A
Routine=B
答案 0 :(得分:1)
看起来参数只返回键。
然后,您必须使用val
来获取值。
答案 1 :(得分:1)
您可以使用tied hash option of Config::IniFiles获取config.txt参数/值对:
use strict;
use warnings;
use Config::IniFiles;
my %ini;
my $sPPFile = "/tmp/config.txt";
tie %ini, 'Config::IniFiles', ( -file => $sPPFile );
print "$_=$ini{ProviderCredentials}{$_}\n"
for keys %{ $ini{ProviderCredentials} };
数据集输出:
Class=A
Routine=B
您可以更改参数的值,然后通过执行以下操作更新配置文件:
$ini{ProviderCredentials}{Class} = 'C';
tied(%ini)->RewriteConfig();
最后一个命令实际上写出了绑定哈希中保存的整个配置。
希望这有帮助!
答案 2 :(得分:0)
#!/sbin/perl -w
use lib "/usr/lib/perl5/site_perl";
use lib "/usr/lib/perl5/vendor_perl";
use strict;
use warnings;
use Config::IniFiles;
my $sPPFile="/tmp/config.txt";
my $sysSec="DomainCredentials";
my $cfg = Config::IniFiles->new(-file=> $sPPFile) || die "Could open file $sPPFile\n";
if ($@){
print "Error";
exit 1;
}
my @param_arr = ('broker','domain');
my %param_hash;
foreach my $p (@param_arr){
if (defined $cfg->val("$sysSec",$p)){
$param_hash{$p} = $cfg->val("$sysSec",$p);
}
else{
die "Could not get parameter $p\n";
}
}
#print $param_hash{broker};
#print $param_hash{domain};
my @params_provider = $cfg->Parameters("ProviderCredentials");
if (defined $cfg->Parameters("ProviderCredentials")){
my @params_provider = $cfg->Parameters("ProviderCredentials");
}else{
die "Could not get parameter ProviderCredentials\n";
}
foreach (@params_provider){
print "Key : ".$_."\t Value : ".$cfg->val("ProviderCredentials",$_)."\n";
}