Perl:YAML:Hash如何选择条目?

时间:2012-07-18 20:34:18

标签: perl yaml

问候Perl专家

根据下面的YAML文件,这个例子Perl:YAML iterate in the Array?有人可以这么好地向我展示一个perl示例,我可以选择国家并打印出我曾经去过的城市吗?

USA:
    BeenThere: [Miami, Denver, Las Vegas, Chicago]
    ToVisit:   [Los Angeles, Boston]
Europe:
    BeenThere: [Paris, Amsterdam, Dublin, Bulgaria, Madrid]
    ToVisit:   [Budapest, Belgrad]
Latam:
     BeenThere: [Venezuela, Bogota]
     ToVisit:   [Argentina, San Paulo]

非常感谢!

2 个答案:

答案 0 :(得分:2)

您想获取每个国家/地区的信息,还是只获取特定的信息?

具体的一个:

my $country_name = '...';
my $country = $data->{$country_name};
my $visited = $country->{BeenThere};
for my $city_name (@$visited) {
   say $city_name;
}

所有

for my $country_name (keys %$data) {
   my $country = $data->{$country_name};
   my $visited = $country->{BeenThere};
   for my $city_name (@$visited) {
      say "$city_name, $country_name";
   }
}

答案 1 :(得分:2)

取决于您如何定义“选择”,这可能会有所帮助:

use strict;
use warnings;
use YAML::XS qw(LoadFile);

my $data = LoadFile('test.yaml');

for my $city (@{$data->{USA}{BeenThere}}) {
  print("$city ");
}

每个国家/地区都是哈希引用,城市是数组引用(处理方式与您传递的链接相同)。