我目前正在使用Config::Std,这是大部分时间都很好,但是这使得某些事情变得困难:
>两层以上的嵌套指令
>处理每个键的多个值
> conf.d目录,即多个配置文件合并到一个大的配置哈希
Config :: Std在解析配置之后生成一个有福的hashref,所以我的所有应用都被编码为使用一个hashref进行配置.我不想改变这个.
我正在寻找的是一个通用的,轻量级的配置模块,生成一个hashref.
我的问题是:我应该考虑哪些配置模块来替换Config :: Std?
解决方法
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.