gpt4 book ai didi

perl:设置默认、本地和全局用户设置

转载 作者:行者123 更新时间:2023-12-04 05:06:33 29 4
gpt4 key购买 nike

我正在处理 perl脚本( myscript.pl ),我想按以下顺序从各个模块加载一些环境变量:

  • defaultSettings.pm 中的默认设置在与 myscript.pl 相同的目录中
  • (可选)userSettings.pm 中的用户设置用户可以选择的其他地方
  • (可选)localSettings.pm 中的本地设置在当前工作目录

  • 我已经解决了我的第一个和最后一个项目符号,但没有成功解决第二个项目。

    myscript.pl
    #!/usr/bin/perl 

    use strict;
    use warnings;
    use FindBin;
    use lib $FindBin::Bin;

    # defaultSettings always present in same directory as myscript.pl
    use defaultSettings;

    # localSettings sometimes present (in current working directory)
    eval
    {
    require localSettings;
    localSettings->import();
    };

    print "Some variable is: ",$someVariable;
    exit

    defaultSettings.pm
    package defaultSettings;

    use strict;
    use warnings;
    use Exporter;

    use vars qw($VERSION @ISA @EXPORT);

    $VERSION = 1.00;
    @ISA = qw(Exporter);
    @EXPORT = qw($someVariable
    );

    our $someVariable="default settings";
    1;

    localSettings.pm
    package localSettings;

    use strict;
    use warnings;
    use Exporter;

    use vars qw($VERSION @ISA @EXPORT);

    $VERSION = 1.00;
    @ISA = qw(Exporter);
    @EXPORT = qw($someVariable
    );

    our $someVariable="local settings";
    1;

    我知道我可以使用
    use lib "/home/foo/bar/";
    use userSettings;

    myscript.pl ,但我想避免让用户编辑 myscript.pl - 主要希望/目标是让用户编辑 myscript.pl 以外的文件.

    我对实现相同想法的其他工作流程持开放态度 :)

    最佳答案

    不要使用 Perl 模块来存储配置数据。这不是它们的用途,而且正如您所见,它们并不真正适合此目的。还有一个潜在的安全风险是模块包含可执行的 Perl,它可以对你的系统做几乎任何事情。数据最好存储在不可执行的文件中。

    相反,可以使用 JSON 数据文件之类的东西,这些文件可以放在磁盘卷上的任何位置并直接读入 Perl 数据结构。

    您的主要问题似乎是如何定义第三组配置数据的位置,对我来说最明显的选项是应该在其他两组之一中指定它 - 可能是存储在当前工作目录中的那一组。

    关于perl:设置默认、本地和全局用户设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15468949/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com