免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6691 | 回复: 5
打印 上一主题 下一主题

Config::IniFiles读取配置文件的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-14 18:46 |只看该作者 |倒序浏览
有一配置文件内容如下:

[target]
trg_tab_owner=escrow
trg_tab_name=escrow_trade
pk_column=id
[list_values]
ORDER_CURRENCY=USD
CLEARING_CURRENCY=USD
REFUND_CURRENCY=USD
REFUND_CLEARING_CURRENCY=USD
PAYMENT_TYPE=online_payment,offline_payment
TRADE_STATUS=underway,success,closed,frozen
FUND_STATUS=not_pay,wait_seller_check,pay_success
[....]
.......
我用
my $trg_tab_owner=$cfg->val("target","trg_tab_owner");
my $trg_tab_name=$cfg->val("target","trg_tab_name");
可以得到这两个变量的值,,但[list_values]部分的内容是不固定的,
我想获取[list_values]到下一个[]之间的内容,用Config::IniFiles有没有办法直接获取呢?
还是只能通过解析文件获取?
请大虾们指教!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2009-07-14 19:34 |只看该作者
keys

论坛徽章:
1
未羊
日期:2014-09-08 22:47:27
3 [报告]
发表于 2009-07-14 20:57 |只看该作者
@sect = $cfg->Sections;

就能得到全部的"[  ]"中的内容了。

论坛徽章:
0
4 [报告]
发表于 2009-07-15 10:03 |只看该作者
原帖由 wxlfh 于 2009-7-14 20:57 发表
@sect = $cfg->Sections;

就能得到全部的"[  ]"中的内容了。



我是想获得
ORDER_CURRENCY=USD
CLEARING_CURRENCY=USD
REFUND_CURRENCY=USD
REFUND_CLEARING_CURRENCY=USD
PAYMENT_TYPE=online_payment,offline_payment
TRADE_STATUS=underway,success,closed,frozen
FUND_STATUS=not_pay,wait_seller_check,pay_success

这部分内容...

论坛徽章:
1
未羊
日期:2014-09-08 22:47:27
5 [报告]
发表于 2009-07-15 15:00 |只看该作者
@para = $icfg->Parameters($sec);

得到每个$sec中的等号左边的值。

$val = $cfg->val($sec, $para);
得到等号右边的值。

还有不明白的话,看文档 http://search.cpan.org/~shlomif/ ... /Config/IniFiles.pm

论坛徽章:
0
6 [报告]
发表于 2009-07-15 16:00 |只看该作者

回复 #1 aboy11 的帖子

hi
in your case, you can directly process the section block "[list_values]" without module Config::IniFiles.
sample code:

  1. my %params = ();
  2. my $section = '[list_values]';
  3. while(<>) {
  4.     chomp;
  5.     my $flag = /^$section/ ? defined : undef;
  6.     # process given section block
  7.     if (not defined $flag) {
  8.         $params{$1} = $2 if /^(.+)=(.+)$/;
  9.     }
  10. }
  11. # dump
  12. foreach my $key (sort keys %params) {
  13.     print "$key = $params{$key}\n";
  14. }       

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP