0

是否可以告诉 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,但这仅适用于 trailing \,我无法将其插入文件中,因为我没有任何权限来更改我必须解析的那些 ini 文件。

4

1 回答 1

2

CPAN 文档说:

多行或多值参数也可以定义为 ala UNIX“此处文档”语法:

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

您可以使用任何您想要的字符串来代替“EOT”。请注意,“<<”后面的内容和文本末尾的内容必须完全匹配,包括任何尾随空格。

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

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

您是否尝试过其中任何一个?(试图捏造其他东西可能是一项艰苦的工作......)

于 2013-09-03T13:23:22.090 回答