在Perl中配置文件处理

tex*_*tex 9 perl cpan config

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

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

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

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

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

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

dax*_*xim 9

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


Dav*_* W. 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是一个非常常用的模块,因此如果您对模块有任何疑问,可以在互联网上获得很多帮助,并且它得到了积极的支持.

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

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

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