gpt4 book ai didi

Perl 配置::简单

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

我有一个 perl 文件,用于查看文件夹中是否存在 ini。如果是,它会从中读取,如果不是,它会根据我为它制作的模板创建一个。

我在 ini 部分使用 Config::Simple。

我的问题是,如果我查找该文件并且它存在,我如何确保其读取的 ini 具有所有应该存在的正确设置名称?

如果ini不存在,它将从我的模板中读取,该模板将始终是最新的,但是如果我向我的代码添加一个新设置并且他们的ini已经存在,我需要能够将新设置添加到他们的。

有什么意见吗?

最佳答案

您可以将 INI 数据加载到散列中,并根据您的要求检查散列键:

my %config;
Config::Simple->import_from('settings.ini', \%config);

my @requirements = qw< foo bar baz quux >;

for ( @requirements ) { # Verify
warn( "Parameter '$_' is missing from INI" )
unless exists $config{$_};
}

如果您需要覆盖默认设置,将默认值保留在哈希中将允许您执行此漂亮的单行:
my %settings = ( %defaults, %config ); # %settings contains defaults + overwrites

为了清晰地分离关注点,人们可能会考虑将其全部滚动到一个子程序中:
use Config::Simple;

sub get_settings {

my ( $ini_file ) = @_;

state %defaults = ( foo => 1, bar => 2 ); # 'state' needs Perl 5.10+
state @requirements = qw< foo bar baz quux >;

my %config;
Config::Simple->import_from( $ini_file, \%config);

for ( @requirements ) { # Verify presence of necessary parameters
next if exists $config{$_};
warn( "Parameter '$_' is missing from INI" );
return %defaults;
}

my %settings = ( %defaults, %config );

return %settings;
}

关于Perl 配置::简单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19826650/

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