【问题标题】:What is the best way to make a simple Perl config file?制作简单的 Perl 配置文件的最佳方法是什么?
【发布时间】:2010-12-12 02:45:21
【问题描述】:

我正在尝试为我的 Perl 脚本制作一个简单的配置文件,我原本打算使用 Config::INIPlus,但我认为它不会起作用。配置文件不需要有什么特别的。我只需要能够读写它。我想用一个模块来完成这个。

更新:

我认为 Config::INIPlus 对我不起作用的原因可能听起来很愚蠢,但我希望配置文件保持特定的值顺序。我一直遇到的问题是 Config::INIPlus 模块坚持擦除整个文件,然后按字母顺序重新插入所有值,而不管它们属于什么主题,所以它弄乱了我想保留配置的顺序文件订购。它还删除了我留给占位符的空变量。

我使用注册表作为配置存储对我的想法进行了测试,非常棒!问题是,尽管我试图让我的脚本尽可能独立于平台,主要是 Windows 和 Linux,而不是我没有的 Mac。

也许我只需要重新考虑我对配置文件的看法,也许我需要一些在我掌握更多 perl 的细节之前无法完成的事情。

【问题讨论】:

  • 如果你碰巧在某个地方有 Perl Best Practices 这本书,我相信它有一整节关于配置文件的加载和保存。
  • 您能解释一下为什么您认为 Config::INIPlus 不适合您吗?你遇到错误了吗?你不喜欢它的配置格式吗?

标签: perl configuration-files


【解决方案1】:

如果您正在寻找简单的东西,我会尝试 Config::TinyConfig-INI

我不喜欢Config::Simple 的地方在于它试图支持太多不同的配置格式。

YAML、JSON 和 XML 都不是我所说的“简单”配置文件,尽管如果您有更复杂的要求,它们也很合适。如果可能的话,我会避免使用 XML;在$WORK,我写了一个 YAML-to-XML 配置文件翻译器,所以我可以用 YAML 编写我的配置,而不是手动编辑 XML 配置文件。

更新问题:当然可以编写一个 Config 模块来保留现有行的顺序,但我不知道有任何现有的这样做。你可能不得不自己写,或者雇人来写。

【讨论】:

  • 嗯,我不知道 Config-INI,我已经用 Config::Tiny 运行过,它实际上已经弄乱了我用 INI 语法编写的配置文件并删除了它!我会研究一下 Config-INI,它可能正是我需要的。
  • @Solignis,Config-INI 是从 Config::Tiny 派生的,所以你可能有同样的问题。您应该更新您的问题,详细说明您尝试了什么以及出了什么问题,以便我们提供更好的建议。如果问题是 cmets 被剥离,您可能需要编写一个新的 Config 模块,因为我不知道任何可以准确往返 cmets。
  • +1 任何 but YAMLJSONXML 用于简单的人工可编辑配置文件。
  • @cjm - XML 配置文件有什么问题?它们非常易于阅读(特别是如果您在任何能够像编程编辑器一样语法高亮显示它们的软件中阅读它们;或者更好的是在浏览器中!),并且非常易于人类维护;并且有支持它们的 CPAN 模块。
  • @Sinan - XML 有什么问题? (JSON 对人类来说并没有那么糟糕,但不如 XML 简单)。
【解决方案2】:

YAML? JSON? XML?有很多可能性,每一种都有一个 Perl 模块。也有普通的旧文本,但如果你必须使用一个模块,只需选择一个标准。

【讨论】:

  • 我明白了,感谢您的帮助,我将不得不进行各种测试,看看哪一个最适合我。它们各有优缺点还是都差不多?
  • YAML 比 JSON 简单,比 XML 简单。所有同样强大的 IMO。
  • 所以像仍在学习 perl YAML 基础知识的人可能是要走的路吗?
  • 不幸的是,YAML 是我最不了解的一种。我不得不将它用于我客户的一个项目。但我猜这是肯定的。
  • YAML 比 JSON 更简单也更复杂。就它可以存储的东西和完整的规范而言,它比 JSON 复杂得多。它的简单之处在于 YAML 文件 可以 包含比 JSON 文件(需要引用字符串)少得多的无关标点符号。
【解决方案3】:

Config::Simple 呢?还有一些相关的模块。

【讨论】:

    【解决方案4】:

    虽然我很喜欢Config::Simple,而且它在一些项目中对我非常有用,但我最喜欢的是AppConfig

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2017-05-29
      相关资源
      最近更新 更多