在Perl中配置文件处理

时间:2011-05-11 06:38:57

标签: perl config cpan

CPAN上的Config :: Namespace中有很多模块,但它们都是以有限的方式限制的。

我目前正在使用Config::Std,这在大多数情况下都很好,但它会使某些事情变得困难:

  • 两个以上级别的嵌套指令
  • 每个键处理多个值
  • conf.d目录,即合并为一个大配置哈希的多个配置文件

Config :: Std在解析配置后生成一个祝福的hashref,因此我的所有应用程序都被编码为使用hashref进行配置。我不想改变它。

我正在寻找的是一个通用,轻量级的配置模块,它可以产生一个hashref。

我的问题是:我应该考虑更换Config :: Std的哪些配置模块?

3 个答案:

答案 0 :(得分:9)

Config::Any(用于加载多个文件并展平为哈希)及其Config::General后端(对于任意嵌套的配置项和每个键的多个值,以及Apache httpd

答案 1 :(得分:6)

您没有说明数据的来源。您是否正在读取配置文件并遇到配置文件本身的限制?

Config :: Std是一个很棒的模块。但是,它的目的是读取和写入Windows Config / INI文件,而Windows Config / INI文件是非常扁平和简单的格式。因此,我不希望Config :: Std做得更多。

如果您现在正在使用Windows Config / INI文件,但将来可能需要阅读更复杂的数据结构,Config :: Any是一个很好的方法。它将处理Windows Config / INI文件并使用相同的编程接口,读写XML,YAML和JSON文件结构。

如果您只是想在程序中保留复杂的数据结构而不关心读取和编写配置文件,我建议您查看XML :: Simple,原因很简单......嗯...简单,可以处理各种数据结构。另外,XML :: Simple是一个非常常用的模块,因此如果您对模块有任何疑问,可以在Internet上获得很多帮助,并且它得到了积极的支持。

你可以使用Config :: Any,但我觉得它使用起来更复杂,而且配置起来比较困难。实际上,您必须安装XML :: Simple(或类似的模块)才能使用它。 Config :: Any的优点是它是各种配置文件格式的单一界面。这样,如果您决定将Windows Config / INI格式切换为XML或YAML,则不必破解程序。

因此,如果您现在正在使用Windows Config / INI文件,并且需要更复杂的数据结构:请查看Config :: Any。

如果您只是想要一种简单的方法来跟踪复杂的数据结构,请查看XML :: Simple。

答案 2 :(得分:0)

YAML将会处理这个问题。

here's the website协议。