【发布时间】:2011-12-16 21:21:46
【问题描述】:
我正在构建一个脚本,该脚本利用配置文件 (YAML) 读取所有必要的配置信息,然后打印出 Linux 管理员构建服务器所需的所有必要步骤。
一个必需选项是运行脚本的 Linux 管理员能够在命令行覆盖配置文件中的任何项/值对。
我目前处理此问题的方式似乎过于繁琐,我知道必须有一种更具创新性且不那么笨重的方式来做到这一点。
在代码一中:
-
使用 YAML::Tiny 解析 YAML 配置文件
location: continent: na country: us city: rh -
创建与配置文件项同名的变量,分配配置文件中的值。
my $yaml = YAML::Tiny->new; $yaml = YAML::Tiny->read($config_yml); my $continent = $yaml->[0]->{location}->{continent}; my $country = $yaml->[0]->{location}->{country}; my $city = $yaml->[0]->{location}->{city}; -
使用Getopt::Long 并分配变量,覆盖在命令行传递的任何内容。
GetOptions ( "city=s" => \$city, "continent=s" => \$continent, "country=s" => \$country, );
所以这些只是 3 个项目/值对,我的实际配置有超过 40 个并且会改变......这使得一些工作必须不断更新。有什么建议吗?
【问题讨论】:
-
是的,这绝对是一种过于繁琐的方法。 1) 已经有一个模块可以为您执行此操作 2) 如果您手动执行此操作,您可以将更复杂的结构传递给 GetOptions。
标签: perl configuration yaml