使用Config :: IniFiles处理多行值

时间:2013-09-03 13:15:26

标签: perl ini

是否可以告诉Config :: IniFiles模块以不会导致整个解析过程失败的方式处理"中包含的多行值?我必须处理这样的ini文件,不幸的是我不能改变它的任何内容。

这就是它的样子

198 revive.msg.fm.email2= "
199 text text text
200 some more text
201 even more text
202
203 and some more"

尝试使用

解析文件
 20 my $cfg_file = Config::IniFiles->new(
 21         -file => '/path/to/config_test.ini',
 22 ) || die Dumper \@Config::IniFiles::errors;

给了我

$VAR1 = [
    'Line 199 in file /home/zzzpetscript/config_test.ini is mal-formed:
    text text text',
    ...
];

我正在查看-allowcontinue 0|1,但这只适用于我无法插入文件的尾随\,因为我没有任何权限来更改那些ini文件我必须解析。

1 个答案:

答案 0 :(得分:2)

CPAN文件说:

  

也可以在UNIX中定义多行或多值参数   “here document”语法:

Parameter=<<EOT
value/line 1
value/line 2
EOT
     

您可以使用任何字符串代替“EOT”。请注意,无论如何   “&LT;&LT;”并且文本末尾出现的内容必须完全匹配,包括任何内容   尾随空白。

     

或者,作为配置选项(默认为关闭),继续   可以允许行:

[Section]
Parameter=this parameter \
  spreads across \
  a few lines
     

你尝试过其中任何一种吗? (试图捏造别的东西是   可能很辛苦....)