【问题标题】:Which generic module are you using to read MySQL ini configuration file?您使用哪个通用模块来读取 MySQL ini 配置文件?
【发布时间】:2011-01-05 22:16:03
【问题描述】:

CPAN 上有很多关于读/写 INI 文件的模块,但是到目前为止我测试过的每个模块(Config::GeneralConfig::IniFilesConfig::SimpleConfig::Tiny)都无法读取我的 MySQL my.cnf 文件。

它们都因为这样的语法而失败(有键但没有值):

skip-external-locking

那么,您使用哪个模块来读取 MySQL ini 配置文件和其他程序 ini 文件?

【问题讨论】:

    标签: perl


    【解决方案1】:

    我最终决定修补 Config::Tiny 来处理非标准 MySQL 的东西...

    我将修改后的模块推送到了 GitHub:

    https://github.com/sebthebert/Perl-Shots/blob/master/Modules/Config/Tiny.pm

    差异:

    8c8
    <   $Config::Tiny::VERSION = '2.12';
    ---
    >   $Config::Tiny::VERSION = '2.13';
    66a67,76
    >       # Handle 'non-standard' MySQL properties
    >       if ( /^\s*([-_a-z]+)\s*$/i ) {
    >                   $self->{$ns}->{$1} = 1;
    >                   next;
    >           }
    >       # Drop 'non-standard' MySQL '!include' & '!includedir' directives
    >       if ( /^\s*!include(dir)?\s+\S+\s*$/ ) {
    >           next;
    >       }
    

    【讨论】:

      【解决方案2】:

      我没试过,但显然有MySQL::Config

      【讨论】:

      • 是的,这个模块可以很好地处理“skip-external-locking”,但我想要一个通用模块,而不是“仅限 MySQL”。
      • @sethebert my.cfg 语法似乎不遵循 ini 文件en.wikipedia.org/wiki/INI_files 的公认约定,并且不能期望与通用解析器一起工作。您可能需要特定的解决方案。
      • @sebthebert - 您可能需要扩展现有模块,例如 Config::IniFiles。但是我可以问一下 MySQL::Config 模块不支持哪些“通用”INI 文件的功能吗?在我看来它是相当通用的,除了名字。我对规范不够熟悉,无法确定地判断
      • @sebthebert - 好点。问题基本上是load_defaults() 方法,特别是其中大约 5 行文件处理...您可能可以提交补丁或创建一个子类模块来覆盖load_defaults() - 比自己滚动更容易。
      • @DVK:我将为 Config::Tiny 提交补丁。
      猜你喜欢
      • 2020-08-08
      • 2011-07-02
      • 2012-11-03
      • 1970-01-01
      • 2013-03-23
      • 2011-07-24
      • 2012-01-13
      • 1970-01-01
      • 2010-09-13
      相关资源
      最近更新 更多