use*_*922 5 iteration perl ini config file
我正在制作一个需要读取并获取INI文件值的Perl脚本.
INI文件格式:
[name]
Property=value
Run Code Online (Sandbox Code Playgroud)
例:
[switch_6500]
cpu=1.5.1.12.4
free_memory=1.45.32.16
[oracle_db_11g]
param1=value1
param2=value2
param3=value3
param4=value4
...
Run Code Online (Sandbox Code Playgroud)
如您所见,可以有任意数量的部分,包含任意数量的参数.部分名称/参数的名称将始终不同.
我需要做的是让我的Perl脚本遍历每个部分,并获取该部分的所有参数名称/值.我以前用INI文件做的只是指定节名和参数名称,如下所示:
#!/usr/bin/perl -w
use strict;
use warnings;
use Config::Tiny;
# Read the configuration file
my $Config = Config::Tiny->new();
$Config = Config::Tiny->read( 'configfile.ini' );
my $Metric1_var = $Config->{switch_6500}->{cpu};
my $Metric2_var = $Config->{switch_6500}->{free_memory};
Run Code Online (Sandbox Code Playgroud)
但是,现在我有无限量的节名称/参数,以及不知道它们的名字,我似乎无法找到提取所有值的方法.我正在环顾Config :: IniFiles模块,它有一些有趣的东西,但我似乎无法找到一种方法来获取参数值而不知道节/参数名称.
如果有人可以帮助我迭代这个INI文件,我将不胜感激.
谢谢.
你可以做你想做的事Config::Tiny.只需使用该keys函数迭代哈希的所有键,如下所示:
use strict;
use Config::Tiny;
my $config = Config::Tiny->read('configfile.ini');
foreach my $section (keys %{$config}) {
print "[$section]\n";
foreach my $parameter (keys %{$config->{$section}}) {
print "\t$parameter = $config->{$section}->{$parameter}\n";
}
}
Run Code Online (Sandbox Code Playgroud)
注意:因为哈希是"散列"的,并且没有像数组一样排序,所返回的键的顺序可能看起来没有意义.由于顺序在INI文件中无关紧要(只有哪个参数位于哪个部分很重要),这应该不是问题.
| 归档时间: |
|
| 查看次数: |
5160 次 |
| 最近记录: |