Perl:迭代INI文件
发布时间:2020-12-15 21:48:18 所属栏目:大数据 来源:网络整理
导读:我正在制作一个需要读取并获取INI文件值的Perl脚本. INI文件格式: [name]Property=value 例: [switch_6500]cpu=1.5.1.12.4free_memory=1.45.32.16[oracle_db_11g]param1=value1param2=value2param3=value3param4=value4... 如您所见,可以有任意数量的部分,
我正在制作一个需要读取并获取INI文件值的Perl脚本.
INI文件格式: [name] Property=value 例: [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 ... 如您所见,可以有任意数量的部分,包含任意数量的参数.部分名称/参数的名称将始终不同. 我需要做的是让我的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}; 但是,现在我有无限量的节名称/参数,以及不知道它们的名字,我似乎无法找到提取所有值的方法.我正在环顾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"; } } 注意:因为哈希是“散列”的,并且没有像数组一样排序,所返回的键的顺序可能看起来没有意义.由于顺序在INI文件中无关紧要(只有哪个参数位于哪个部分很重要),这应该不是问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |