Chinaunix

标题: Config::IniFiles读取配置文件的问题 [打印本页]

作者: aboy11    时间: 2009-07-14 18:46
标题: Config::IniFiles读取配置文件的问题
有一配置文件内容如下:

[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有没有办法直接获取呢?
还是只能通过解析文件获取?
请大虾们指教!
作者: flw    时间: 2009-07-14 19:34
keys
作者: wxlfh    时间: 2009-07-14 20:57
@sect = $cfg->Sections;

就能得到全部的"[  ]"中的内容了。
作者: aboy11    时间: 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

这部分内容...
作者: wxlfh    时间: 2009-07-15 15:00
@para = $icfg->Parameters($sec);

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

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

还有不明白的话,看文档 http://search.cpan.org/~shlomif/ ... /Config/IniFiles.pm
作者: ulmer    时间: 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. }       

复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2