Створення JSON в perl - json, perl

Використовуючи цей код, я отримую лише масив імен та розширень, які перелічені один за одним, як мені отримати окрему {name:"tom", extension:"012345"} за кожен хеш я створюю? Я хотів би [{name:"tom", extension:"012345"}, {name:"tim", extension:"66666"}]

#!/usr/bin/perl
use strict;
use warnings;
use lib $ENV{HOME} . "/perl/lib/perl5";
use lib "/home/accounts/lib";

use Data::Dump qw(dump);
use Lib::Phonebook;
use JSON;

my $ldap = Lib::Phonebook->new();
my (@names, @numbers, $count, $name_number_count, @result);

@names             = $ldap->list_telephone_account_names();
@numbers           = $ldap->list_telephone_account_numbers();
$name_number_count = @names;
$count = 0;

for $count (0 .. $name_number_count - 1) {
my %hash = ( "name" => $names[$count], "extension" => $numbers[$count] );
push( @result, %hash );
}

my $json = encode_json @result;
print dump $json;

Відповіді:

3 для відповіді № 1

Замість

push( @result, %hash );

робити:

push( @result, %hash );

Початкова версія копіює весь хеш досписок (як ви виявили, що це стає ключем, значенням, ключем, значенням ...), тоді як додавання зворотної риски натискає посилання на хеш (без копіювання що-небудь ще) і серіалізацію всього того, що до JSON створює вкладену структуру.