【问题标题】:read / write perl object config files读/写 perl 对象配置文件
【发布时间】:2014-04-10 09:49:55
【问题描述】:

我正在寻找一个 perl 配置文件编辑器。我看到了一些很棒的模组,例如:

Config::General

Config::Simple

Config::Tiny

但是,这些选项往往会加载 ini、yaml、json 等。 文件而不是 perl 配置文件。

在 perl 中加载 perl 配置文件不是总是更快更安全吗?这样文件是通过 evaldo 加载的,而不是通过 reg exps 等手动解析。但是我似乎找不到一个好的预写版本。

Reading and Writing Perl... - 旧的 perlmonks 线程

OpenPlugin::Config::Perl - 可能是我在寻找什么??

什么是最好的模块? ini 文件加载似乎比直接以已经编写的语言加载文件更受欢迎吗?

谢谢

更新

我不会评估随机文件,我会加载我自己的自定义 perl 文件。这与加载已经用 php.ini 编写的 php 配置文件相同。有人知道使用 PERL 的模块吗?

【问题讨论】:

    标签: perl config


    【解决方案1】:

    除非我们谈论的是巨大的配置文件,否则我不会担心加载和解析配置文件的速度。

    关于安全性,您不会只想eval 从文件系统中读取的任何旧 Perl 代码/配置 - 谁知道它会尝试做什么?您需要确保使用 Safe 模块中的 reval 方法。

    【讨论】:

    • 所以速度不是问题,谢谢。但是,我不会评估一个随机的 perl 文件,它将是我自己的带有一个变量的配置文件。也许使用 do 语句会是相等的?
    • 我仍然建议您使用安全模块,以防您的系统受到威胁并且您的配置被编辑,或者即使有人不小心搞砸了它。 Safe 比对不起更好。
    【解决方案2】:

    我目前正在进行的项目使用 Config::Any。它相当容易使用,并且对于它将接受哪些类型的配置文件非常灵活(在概要中它说它使用 yaml、json、ini 等)。

    根据我使用 JSON 或 yaml 的经验,似乎可以解决问题,但我并不熟悉使用每种方法的优缺点,因此您必须自己决定:)。希望对你有所帮助^^

    【讨论】:

    • 谢谢,不过我希望使用 perl 配置。
    • 来自 pod 页面:“Config::Any 为 Perl 应用程序和库提供了从多种不同文件格式加载配置数据的工具。它支持 XML、YAML、JSON、Apache 风格的配置、Windows INI 文件,甚至 Perl 代码。”因此,您可以根据需要使用它。看起来很整洁。
    【解决方案3】:

    eval随机配置文件,因为 Perl 充满了危险。它可能包含任何内容,包括擦除硬盘驱动器的代码。它还削弱了引用的局部性,因为您拥有影响程序外部整体状态的可执行代码。

    对于配置文件,我经常使用 XML::Simple。这是获取基本名称-值对的一种简单方法。

    【讨论】:

    • 您好,我了解可执行代码的问题,但我正在尝试仅加载一个变量作为哈希引用,例如HERE。它永远不会是一个随机的 perl 配置文件。
    • 除非你不知道人们在将来更改配置值时放了什么。配置文件用于随机人在未知的未来进行的随机更改。说真的,你正在加载一个值?使用真正的配置文件方法。
    • Rob,这是假设其他任何人都有权更改配置文件或应该更改配置文件。任何有权更改配置文件的人都可以轻松更改 perl 模块或 perl 文件核心代码,具体取决于您的存储位置和访问设置。我相信perl方法是一种非常真实的方法。一个哈希标量可以保存任意数量的值,从而更容易创建和加载对象。这与将值保存在名为 $CFG 或 $config 的关联数组中的 php 文件完全相同。
    【解决方案4】:

    我不认为 Config::Any 提供读+写。

    但如果您愿意使用 Perl 数据结构进行配置,因为有一些反对 JSON 等的论据 - 您可能想看看 Config::Perl

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-12
      • 2013-11-20
      • 2013-06-16
      • 2014-02-14
      • 2011-07-02
      相关资源
      最近更新 更多