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 に答える