Вы можете позволить администратору переопределить настройки YAML с помощью одного гибкого переключателя, аналогичного тому, что ssh(1)
делает с -o
. Это особенно уместно, если настройки конфигурации многочисленны и могут измениться.
$ myscript -o location:city=rh --option location:country=us
Теперь, внутри скрипта, вы можете хранить все ваши конфигурации времени выполнения для удобства (вместо того, чтобы $this_and_that_opt
скаляры распространялись со временем). Вариант разбора будет выглядеть примерно так:
# First, set up %GlobalAppCfg from defaults and YAML
# now handle "-o location:country=us"
GetOptions('option|o=s' => sub {
my (undef, $optstring) = @_;
my ($userkey, $val) = split('=', $optstring, 2);
my ($major, $minor) = split(':', $userkey, 2);
$GlobalAppCfg->{$major}->{$minor} = $val;
},
...);
или что угодно. Вы можете нормализовать конфигурационные ключи и значения, обрабатывать произвольно глубокие конфигурации ключа / подключа / подключа и т. Д. Это может быть скользким, так что вы можете key-lock этот глобальный хеш.