【问题标题】:Config file handling in PerlPerl 中的配置文件处理
【发布时间】:2011-08-23 01:05:45
【问题描述】:

CPAN 上的 Config:: 命名空间中有很多模块,但它们都以某种方式受到限制。

我目前正在使用Config::Std,大部分时间都很好,但是它使某些事情变得困难:

  • 多于两层的嵌套指令
  • 处理每个键的多个值
  • conf.d 目录,即多个配置文件合并到一个大的配置哈希中

Config::Std 在解析配置后生成一个祝福的 hashref,所以我所有的应用程序都被编码为使用 hashref 进行配置。我宁愿不必改变这一点。

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

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

【问题讨论】:

    标签: perl config cpan


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      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 是一个非常常用的模块,所以如果您对该模块有任何疑问,网上有很多帮助,并且积极支持。

      您可以使用 Config::Any,但我发现它使用起来更复杂,也更难配置。事实上,您必须安装 XML::Simple(或类似模块)才能使用它。 Config::Any 的优点是它是各种配置文件格式的单一接口。这样一来,如果您决定将 Windows Config/INI 转换为 XML 或 YAML,您就不必破解您的程序。

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

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

      【讨论】:

      • Config::Any 非常适合读取各种配置文件格式,但不提供将配置写回磁盘的挂钩。 (如有遗漏请指正)
      【解决方案3】:

      YAML 会处理这些以及更多。

      here's the website 用于协议。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-25
        • 2011-03-09
        • 1970-01-01
        • 2014-05-16
        • 2010-10-19
        • 1970-01-01
        • 2018-03-05
        • 1970-01-01
        相关资源
        最近更新 更多