如何在perl中使用YAML加载多个文件

时间:2015-12-02 06:24:28

标签: perl yaml

我需要使用YAML

在perl中加载两个不同的配置文件
  

使用YAML qw' LoadFile';

然后在我使用的第一个函数

  

my $ conf = LoadFile(' /config/test.yaml');我的$ serve = $ conf-> {test};

在第二个我使用

  

my $ conf = LoadFile(' /config/XYZ.yaml');我的$ key = $ conf-> {xyz};

现在在这种情况下,如果我只使用一个文件然后它工作正常,但同时使用它们给我错误。 有人知道它的原因吗?

2 个答案:

答案 0 :(得分:1)

我担心您无法获得足够的信息来帮助我们诊断您的问题,但正如您所说,这里是一个加载两个不同YAML文件的演示。正如您所看到的,它与您自己的代码所显示的内容完全相同,这应该可以正常工作

test.yaml

---
test: value for test

XYZ.yaml

---
xyz: value for xyz

test.pl

use strict;
use warnings 'all';
use feature 'say';

use YAML qw/ LoadFile /;

my $conf = LoadFile('test.yaml');
say $conf->{test};

$conf = LoadFile('XYZ.yaml');
say $conf->{xyz};

输出

value for test
value for xyz

答案 1 :(得分:1)

我注意到在你的问题中,你谈到了在不同的功能中加载这两个文件。所以我改变了Borodin' answer以更好地反映我认为你在做什么。

#!/usr/bin/perl

use strict;
use warnings 'all';
use feature 'say';

use YAML qw/ LoadFile /;

sub load_test {
  my $conf = LoadFile('test.yaml');
  my $test = $conf->{test};
  say $test;
}

sub load_xyz {
  my $conf = LoadFile('XYZ.yaml');
  my $xyz = $conf->{xyz};
  say $xyz;
}

load_test();
load_xyz();

当我跑步时,我得到:

value for test
value for xyz

所以我无法看到问题所在。如果您需要更多帮助,那么您需要向我们提供更多详细信息。