【问题标题】:How to load multiple files in using YAML in perl如何在 perl 中使用 YAML 加载多个文件
【发布时间】:2015-12-02 06:24:27
【问题描述】:

我需要使用 YAML 在 perl 中加载两个不同的配置文件,

使用 YAML qw'LoadFile';

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

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

第二个我用过

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

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

【问题讨论】:

  • 错误信息是什么?
  • @MattJacob 实际上代码在此语句之后不起作用
  • “代码不起作用”?这到底是什么意思?
  • 我的意思是,我使用了这个语句 "printf("requested $serve\n");"显示它的值,但它不会执行并停止工作
  • @MattJacob 能否提供一个示例或适当的链接,其中在 perl 中使用 YAML 加载两个文件,

标签: perl yaml


【解决方案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

【讨论】:

  • @Luna:如果您仍然需要帮助,那么您应该打开另一个问题,提供有关您的 Perl 代码和数据的更多信息
【解决方案2】:

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

#!/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

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

【讨论】:

    猜你喜欢
    • 2019-05-16
    • 1970-01-01
    • 2016-03-07
    • 2014-01-20
    • 2020-12-07
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多