Perl Config :: Tiny-> read()无法处理CRLF

时间:2018-10-25 12:34:04

标签: perl config perl-io

我在Windows 10下将Perl与Ubuntu一起使用。我想使用Perl Config :: Tiny模块读取文件名和其他配置数据。当我读取在Linux中Windows下创建的配置文件时,它将回车符保留在值的末尾。目前,我是通过在Linux下制作配置文件的临时副本来解决此问题的。

有没有一种方法可以告诉Config :: Tiny-> read()打开行结束处理的配置文件,而这正是我想要的?

这是我当前代码的一部分:

use Config::Tiny;
my $configfile = 'MyScript.ini';
# ; MyScript.ini file looks like:
# [MyScript]
# infilename=Dii.fwdata
# outfilename=Dii.1.fwdata
# logfilename=Dii.ReverseMerge.log
# someotherconfig=xyzzy

say STDERR "read config from:$configfile";
# Windows CRLF nonsense
if ( $^O =~ /linux/)  {
    `perl -pe 's/\r\n/\n/' < $configfile  >/tmp/$configfile `;
    }
my $config = Config::Tiny->read($configfile);
my $infilename = $config->{MyScript}->{infilename};
my $outfilename = $config->{MyScript}->{outfilename};
# ... etc,

1 个答案:

答案 0 :(得分:6)

只需传递crlf作为“编码”即可。然后将其用作打开模式:

$Config = Config::Tiny->read( 'file.conf', 'crlf' ); # Neither ':' nor '<:' prefix!

另请参见

https://metacpan.org/pod/Config::Tiny