我想创建一个perl配置文件。我想要一个包含变量的文件格式。所以像这样:
DefaultDirectory = /var/myProgram/
OutputDirectory = $DefaultDirectory/output
InputDirectory = $DefaultDirectory/input
这看起来很简单,但我不确定perl的可用内容。我看到的perl ini选项似乎并不支持它。我看了YAML,但看起来几乎是矫枉过正。
有人能建议一个好的文件格式和支持它的CPAN模块,它可以支持简单的变量吗?我坚持使用perl 5.5,所以希望这是一个较旧的模块。
答案 0 :(得分:1)
test.cfg
# Simple variables
DefaultDirectory = /var/myProgram
OutputDirectory = $DefaultDirectory/output
InputDirectory = $DefaultDirectory/input
# Blocks of related variables
<host_dev>
host = devsite.example.com
user = devuser
password = ComeOnIn
</host_dev>
<host_prod>
host = prodsite.example.com
user = produser
password = LockedDown
</host_prod>
test.pl
#!/usr/bin/perl
use strict;
use warnings;
use Config::General;
my $conf = Config::General->new(
-ConfigFile => 'test.cfg',
-InterPolateVars => 1
);
my %config = $conf->getall;
print <<HERE;
Default directory: $config{'DefaultDirectory'}
Output directory: $config{'OutputDirectory'}
Input directory: $config{'InputDirectory'}
Development host: $config{'host_dev'}{'host'}
Development password: $config{'host_dev'}{'password'}
Production host: $config{'host_prod'}{'host'}
Production password: $config{'host_prod'}{'password'}
HERE
输出:
Default directory: /var/myProgram
Output directory: /var/myProgram/output
Input directory: /var/myProgram/input
Development host: devsite.example.com
Development password: ComeOnIn
Production host: prodsite.example.com
Production password: LockedDown
答案 1 :(得分:0)
您是否考虑过编写自己的包含config的perl模块?
像(MyConfig.pm
):
package MyConfig;
our $DefaultDirectory = '/path/to/somewhere';
our $setting_for_something = 5;
1;
然后,您可以使用use MyConfig;
导入该内容。您可能需要先设置use lib
或FindBin
来查找模块(取决于您调用脚本的位置 - use
将搜索cwd)。
但是真的 - perl 5.5
?鉴于这是2004年的版本,这非常值得更新。我希望你不会在10年前的软件上运行太多东西 - 世界已经改变了很多介入时间。 (Perl也是如此)