无法从perl脚本中读取完整的yaml文件

时间:2015-01-07 15:24:43

标签: perl

我如何从perl脚本中读取下面的yaml文件?

test.yaml

---
a: first
b: second
c: third
---
a: fourth
b: fifth
c: seventh

我尝试了以下脚本,但没有运气

use YAML;
use Data::Dumper;

open (YFILE, "<test.yaml") or die $!;
my $yaml = join('', <YFILE>);
close(YFILE)

my $hash = YAML::Load($yaml);

print Dumper($hash);

请建议。

1 个答案:

答案 0 :(得分:4)

首先,您应该启用use strictuse warnings

您在close(YFILE)上也错过了分号。

当我在你的脚本中添加一个分号时,我得到了这个输出:

$VAR1 = {
      'c' => 'seventh',
      'a' => 'fourth',
      'b' => 'fifth'
};

感谢@choroba,您显然可以这样做:

use YAML;
use Data::Dumper;

open (YFILE, "<test.yaml") or die $!; 
my $yaml = join('', <YFILE>);
close(YFILE);

my (@objs)  = YAML::Load($yaml);

print Dumper(@objs);

返回:

$VAR1 = {
      'c' => 'third',
      'a' => 'first',
      'b' => 'second'
};

$VAR2 = {
      'c' => 'seventh',
      'a' => 'fourth',
      'b' => 'fifth'
};