Perl: массив хэшей - PullRequest
       1

Perl: массив хэшей

0 голосов
/ 08 ноября 2018

У меня есть это в формате JSON. Как извлечь заголовки и значения и добавить их в мой существующий хеш (%movies)?

{ 'WarMovies' => [ { 'Lone Survivor' => 1 }, { 'Black Hawk Down' => 1 } ] }

Ответы [ 3 ]

0 голосов
/ 08 ноября 2018
my $input = { 'WarMovies' => [ { 'Lone Survivor' => 1 }, { 'Black Hawk Down' => 1 } ] };
my %movies = ();
map { my ($key) = keys(%$_); $movies{$key} = 1 } @{$input->{WarMovies}};
print Dumper(\%movies);
0 голосов
/ 09 ноября 2018

Вот краткий способ извлечь заголовки из вашего хэшрефа, добавив в цепочку map, чтобы почитать вложенные ссылки.

use v5.10;
use strict;
use warnings;

my $hashref = { 'WarMovies' => [ { 'Lone Survivor' => 1 }, { 'Black Hawk Down' => 1 } ] };
my @titles = map { keys %$_ } map { @{$hashref->{$_}} } keys %$hashref;
0 голосов
/ 08 ноября 2018
use strict;
use warnings;
use Data::Dumper;

my $input = { 'WarMovies' => [ { 'Lone Survivor' => 1 }, { 'Black Hawk Down' => 1 } ] };
my %movies = ();

foreach my $genre (keys(%$input)) {
    #print Dumper($genre);
    foreach my $movie_hash (@{$input->{$genre}}) {
        my @titles = keys(%$movie_hash);
        foreach my $title (@titles) {
            $movies{$title} = 1;
        }
    }
}

print Dumper(\%movies);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...