让我们说我正在使用AppConfig来读取文件。我的文件有一个基目录,以及一个输入和输出目录。
我使用appconfig来读取此文件。当我定义这个文件时,我写了这样的东西:
$conf = AppConfig->new({
GLOBAL => {
EXPAND -> AppConfig::EXPAND_VAR
}
});
$conf -> define("base_dir", {DEFAULT =>"/base"});
$conf -> define("output_dir", {DEFAULT => "/base/output"});
$conf -> define("input_dir", {DEFAULT => "/base/input"});
$conf -> file("config.cfg");
现在假设我有一个配置文件将base_dir定义为" foo"但无论出于何种原因忘记定义input_dir,如下所示:
我的文件通常看起来像这样
base_dir = /foo/
output_dir = $base_dir/output
我们将默认的input_dir用作" / base / input /"但我很可能希望我的输入目录为" / foo / input"只是忘了写那行。这是因为我对input_dir的默认值是如此硬编码。
我宁愿让输入和输出目录的默认值以他们依赖于base_dir的方式编写。像这样:
$conf -> define("base_dir", {DEFAULT =>"/base"});
$conf -> define("output_dir", {DEFAULT => "$base_dir/output"});
$conf -> define("input_dir", {DEFAULT => "$base_dir/input"});
有没有办法让它工作,这样appconfig会根据其状态中的其他值正确扩展默认值?无论配置文件的顺序如何,都是确定性的?