3

问候 Perl 专家

基于下面的 YAML 文件,这个例子Perl:YAML 在数组中迭代? 有人可以给我看一个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]

非常感谢!

4

2 回答 2

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";
   }
}
于 2012-07-18T21:27:01.487 回答
2

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

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

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

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

每个国家都是一个哈希引用,城市是数组引用(像您传递的链接一样处理)。

于 2012-07-18T21:27:30.267 回答