我正在寻找解析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
答案 0 :(得分:4)
嗯,你似乎已经有了正确的想法。与您使用
访问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