3

我正在寻找解析 YAML 文档的帮助。具体来说,我不确定主机打印/访问“卷”元素。任何帮助将不胜感激。提前致谢!

perl 代码:

#!/usr/bin/perl

use YAML::Tiny;


# Open the config
$yaml = YAML::Tiny->read( 'file.yml' );

# Reading properties
my $root = $yaml->[0]->{rootproperty};
my $one  = $yaml->[0]->{physical_interfaces}->{e0a};
my $Foo  = $yaml->[0]->{physical_interfaces}->{e0b};
print "$root\n";
print "$one\n";
print "$volume1\n";

我的 yaml 文件如下所示:file.yaml

---
    rootproperty: netapp1
    is_netapp: Yes
    netapp_mode: 7mode
    is_metro_cluster: Yes
    is_vseries: Yes
    is_flexcache_origin: No
    snapmirror:
      enabled: Yes
      destination: Yes
      lag_threshold: 2300
    physical_interfaces:
      e0a: netapp1-e0
      e0b: netapp1-e1
      mgt: netapp1-mgt
    volumes:
      - volume: vol1
        reserve: 50
        sched: 6 42 0
      - volume: vol2
        reserve: 20
        sched: 0 3 0
4

1 回答 1

5

好吧,您似乎已经有了正确的想法。与您可以访问该rootproperty字段的方式相同

my $root = $yaml->[0]{rootproperty}

您可以volumes使用

my $volumes = $yaml->[0]{volumes}

$volumes现在是对卷哈希数组的引用。你可以打印出来,例如,使用

for my $vol (@$volumes) {
  print $vol->{volume}, "\n";
  print $vol->{reserve}, "\n";
  print $vol->{sched}, "\n";
  print "\n";
}

使用您显示的数据,这将产生输出

vol1
50
6 42 0

vol2
20
0 3 0
于 2013-10-01T14:24:36.317 回答