加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl read INI file

发布时间:2020-12-15 20:52:46 所属栏目:大数据 来源:网络整理
导读:工作中需要处理INI 配置文件,看了下同事写的脚本,处理的比较简单,只解析了需要的那部分,没有对其他部分做出处理,自己重新写了一个,可以把整个文件一次处理完毕,很简单,代码如下: ? use warnings; use Data::Dumper; my $f = 'd:/project/SDI/params

工作中需要处理INI 配置文件,看了下同事写的脚本,处理的比较简单,只解析了需要的那部分,没有对其他部分做出处理,自己重新写了一个,可以把整个文件一次处理完毕,很简单,代码如下:

?

use warnings;
use Data::Dumper;

my $f = 'd:/project/SDI/params.config';
my (%dict,$this);

open FILE,"$f";
while(<FILE>){
??? chomp;
??? #解释行和空白行跳过不做处理
??? if(/^/s*#/ or /^/s*$/){
??????? next;
??? }
??? #将[ ]作为头做处理,如有重复将做合并处理
??? elsif(/^/s*/[(/w+)/]/s*$/){
??????? if(exists $dict{$1}){
??????????? $this = $dict{$1};
??????? }
??????? else{
??????????? $dict{$1} = {};
??????????? $this = $dict{$1};
??????? }?????? ?
??? }
??? #定义处理,如有重复将做覆盖处理
??? elsif(/^/s*([^ ]+)/s*=/s*([^ ]+)/s*$/){
??????? ($param,$value) = ($1,$2); #split '=',$_;
??????? $this->{$param}=$value;
??? }
??? #不符合INI文件定义则报错
??? else{
??????? print "Line format error: $_";
??? }
}

print Dumper %dict;

?

测试文件如下:

#this is testing

[checkFileNums_123]
File_Dir=/home/users/dhu/tmp/xtff
Log_Path=./logs/checkFileNums

[checkFileDate]
File_Dir=/home/users/dhu/tmp/xtff
Log_Path=./logs/checkFileDate

?

上述文件运行结果如下:

$VAR1 = 'checkDoneList'; $VAR2 = { ????????? 'File_Dir' => '/home/users/dhu/tmp/xtff',????????? 'Log_Path' => './logs/checkDoneList' ??????? }; $VAR3 = 'checkFileDate'; $VAR4 = { ????????? 'File_Dir' => '/home/users/dhu/tmp/xtff',????????? 'Log_Path' => './logs/checkFileDate' ??????? };

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读