在Perl脚本中使用YAML配置文件中的数据的简单示例

时间:2010-08-10 21:24:59

标签: perl yaml

我需要创建一个YAML文件来存储Perl脚本的一些配置数据。这似乎应该很容易,但我还没有能够解决它,我想如果我只有一个简单的例子来复制我会没事的。我想做这样的事情:

-----test.yaml-----
image_width: 500
show_values: 0
-------------------

------test.perl------
use YAML;

my (%settings) = Load('test.yaml');
print "The image width is", $settings{image_width};
---------------------

3 个答案:

答案 0 :(得分:16)

试试这个:

#!/usr/bin/perl

use strict;
use warnings;
use 5.010;

use YAML qw(LoadFile);

my $settings = LoadFile('test.yaml');
say "The image width is ", $settings->{image_width};

- 迈克尔

答案 1 :(得分:14)

这里的基本问题是Load需要一个包含YAML的字符串,而不是文件名。您想要LoadFile(默认情况下不会导出)。此外,如果可以,您应该使用YAML::XS而不是YAML,因为这是一个更好的实现。 (但是YAML应该足以用于简单的配置文件。)

另一个问题是LoadFile将返回一个哈希引用(好吧,如果你的YAML看起来像哈希,就像你的那样),而不是你可以用来初始化哈希的列表。

试试这个:

use strict;
use warnings;
use YAML::XS qw(LoadFile);

my $settings = LoadFile('test.yaml');

print "The image width is ", $settings->{image_width};

(如果您不想(或不能)安装YAML :: XS,可以删除::XS。该程序无需其他更改即可使用。)

答案 2 :(得分:7)

尝试转出所需的配置。

use strict;
use warnings;

use YAML;

my %settings = (
        foo => 1,
        bar => [qw/one two three/],
);

print Dump(\%settings);

打印

---
bar:
  - one
  - two
  - three
foo: 1

此外,如果规范有点过于密集,维基百科有一个很好的overview of YAML