【问题标题】:Perl how to parse INI files that contains variables?Perl如何解析包含变量的INI文件?
【发布时间】:2015-07-26 02:50:09
【问题描述】:

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 中是否有类似的东西,或者我正在寻找的解决方法?

【问题讨论】:

  • Config::General::Interpolated 仅解析类型为 $variable 或 ${variable} 的变量,而 INI 文件具有“%(root)s”的 Python 类型

标签: perl


【解决方案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');

【讨论】:

  • 工作,即使我在 Perl 中寻找更多内置的东西,但谢谢!
  • 您使用的 Config::IniFiles 不是 Perl 内置的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
  • 2017-06-01
  • 2014-02-15
  • 1970-01-01
  • 2012-11-18
  • 1970-01-01
相关资源
最近更新 更多