2011-05-11 56 views
9

CPAN上的配置::名稱空間中有很多模塊,但它們都以不同的方式受到限制。我目前使用Config::Std,這是很好的大部分時間Perl中的配置文件處理

,但它使某些事情很難:

  • 兩個以上級別的嵌套指令的每個鍵
  • 處理多個值
  • conf.d目錄,即多個配置文件合併成一個大的配置散列

Config :: Std解析後生成一個幸福的hashref config,所以我的所有應用程序都被編碼爲使用hashref進行配置。我寧願不必改變這一點。

我在尋找的是一個通用的,輕量級的配置模塊,它產生一個hashref。

我的問題是:我應該考慮使用哪些配置模塊來替換Config :: Std?

回答

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。

+0

Config ::任何閱讀各種配置文件格式都很棒,但不提供將配置寫回磁盤的鉤子。 (如果我錯過了,請糾正我) – spazm 2012-12-08 06:34:25