2015-05-14 59 views
0

INI文件可以在它里面的变量,比如:Perl如何解析包含变量的INI文件?

[section1] 
root=/path/to/dir 
home=%(root)s/my_home_dir/ 

现在,Perl库Config::IniFiles似乎并不解析它,它并将其作为原始字符串

my $result = tie %info, 'Config::IniFiles', (-file => $ini_file); 

在Python有一个类似的包叫ConfigParser.RawConfigParser - 不会转换变量,但那么你可以使用ConfigParser.ConfigParser,它会。

Perl中是否有类似的东西,或者是我正在寻找的解决方案?

+0

'配置::一般Interpolated',但它使用Perl样式的变量语法。 – toolic

+0

Config :: General ::内插只解析类型变量:$ variable或$ {variable}而INI文件具有“%(root)s”类型的Python类型 –

回答

1

如果你不能找到你所使用的配置文件格式现有的解析器,你可以简单地使用

sub get_conf { 
    my ($hash, $key) = @_; 
    my $val = $hash{key}; 
    return undef if !defined($val); 

    $val =~ s{%\(([^()]*)\)}{ get($hash, $1) // "" }eg; 
    return $val; 
} 

my $home = get_conf(\%conf, 'home'); 
+0

工程,即使我正在寻找更多的内置在Perl中,但谢谢! –

+0

Config ::您使用的IniFiles不是内置在Perl中 –