2011-05-11 3 views
9

Il existe de nombreux modules dans l'espace de noms Config :: sur CPAN, mais ils sont tous limités d'une manière ou d'une autre.Gestion des fichiers de configuration en Perl

Je suis actuellement en utilisant Config::Std, ce qui est bien la plupart du temps, mais il fait certaines choses difficiles:

  • plus de deux niveaux de directives imbriquées
  • manipulation
  • de multiples valeurs par clé
  • répertoires conf.d, soit plusieurs fichiers de configuration qui sont fusionnés en un seul grand hachage de configuration

config :: Std génère un hashref béni après l'analyse de la config, donc toutes mes applications sont codées pour utiliser un hashref pour la configuration. Je préférerais ne pas avoir à changer ça.

Ce que je recherche est un module de configuration léger et universel qui produit un hashref.

Ma question est: Quels modules de configuration dois-je envisager pour remplacer Config :: Std?

Répondre

6

Vous n'avez pas indiqué d'où proviennent vos données. Êtes-vous en train de lire dans un fichier de configuration et de courir dans la limite du fichier de configuration lui-même?

Config :: Std est un très bon module. Cependant, il était destiné à lire et écrire des fichiers Windows Config/INI, et les fichiers Windows Config/INI sont des formats très plats et simples. Ainsi, je ne m'attendrais pas à ce que Config :: Std fasse beaucoup plus.

Si vous utilisez des fichiers Windows Config/INI en ce moment, mais que vous devrez peut-être lire des structures de données plus complexes à l'avenir, Config :: Any est une bonne solution. Il va gérer les fichiers Windows Config/INI et utiliser la même interface de programmation, lire et écrire des structures de fichiers XML, YAML, et JSON aussi.

Si vous essayez simplement de conserver une structure de données complexe dans votre programme et ne vous souciez pas de lire et d'écrire des fichiers de configuration, je vous recommande de regarder XML :: Simple pour la raison très simple qu'il est .. .well ... simple et peut gérer toutes sortes de structures de données. De plus, XML :: Simple est un module très utilisé, donc il y a beaucoup d'aide sur Internet si vous avez des questions sur le module, et il est activement supporté.

Vous pouvez utiliser Config :: Any, mais je le trouve plus complexe à utiliser, et plus difficile à configurer. En fait, vous devez installer XML :: Simple (ou un module similaire) pour pouvoir l'utiliser. L'avantage de Config :: Any est qu'il s'agit d'une interface unique pour toutes sortes de formats de fichiers de configuration. De cette façon, vous n'avez pas besoin de pirater votre programme si vous décidez de changer Windows Config/INI en XML ou YAML. Donc, si vous travaillez maintenant avec des fichiers Windows Config/INI et que vous avez besoin d'une structure de données plus complexe: Regardez Config :: Any.

Si vous recherchez simplement un moyen simple de suivre des structures de données complexes, consultez XML :: Simple.

+0

Config :: Any est génial pour lire une variété de formats de fichiers de configuration, mais ne fournit pas un crochet pour l'écriture de la configuration sur le disque. (S'il vous plaît corrigez-moi si je l'ai manqué) – spazm

9

Config::Any (pour charger plusieurs fichiers et aplatissement à un hachage) et son back-end Config::General (pour les éléments de configuration arbitrairement imbriquées et plusieurs valeurs par clé à La Apache httpd)