Получить ключ из массива хэшей в Perl - PullRequest
0 голосов
/ 14 октября 2019

У меня есть массив хэш-кода, где я пытаюсь распечатать ключ из массива хэша в PERL. Ниже приведен код

my $list = [];

$list = [
    {
     Test => “Value”
    }
];

my ($get_list_key) = map { $_ } @$list;

print $get_list_key;

Я получаю вывод как:

HASH(0x10bdfd0)

Я хочу вывод как:

$list = [
     "Test"
];

Может кто-нибудь, пожалуйста, помогите.

Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 14 октября 2019
$list = [
    {
     Test => “Value”
    }
];

Здесь вы устанавливаете $list в качестве ссылки на массив. Ссылочный массив имеет только один элемент, который является ссылкой на хеш. Кроме того, вы используете неправильные символы кавычки для определения "Value" - вам нужно использовать прямые кавычки.

my ($get_list_key) = map { $_ } @$list;

Вы разыменовываете ссылку на массив, чтобы получитьмассив, который вы можете использовать с map. Но, как мы уже говорили выше, единственный элемент в массиве является ссылкой на хеш. В блоке map вы просто возвращаете $_, который будет этой хеш-ссылкой, поэтому вы получите одну хеш-ссылку обратно в переменную $get_list_key.

Вам нужно сделать что-то более умное в map блок. Вы хотите получить ключи ссылочного хеша. Для этого вам нужно сделать две вещи: 1 / разыменовать ссылку на хэш и 2 / использовать функции keys.

my ($get_list_key) = map { keys %$_ } @$list;

Это даст вам один ключ («Тест») в вашем$get_key_list переменная. Но это не то, что вы хотите. Вы хотите ссылку на массив, который содержит все ключи. Для этого вам нужно окружить все выражение в правой части оператора присваивания анонимным конструктором массива ([ ... ]). Итак, в конце концов, вы получите код в ответе Хокон.

my ($get_list_key) = [ map { keys %$_ } @$list ];
3 голосов
/ 14 октября 2019

Попробуйте:

use strict;
use warnings;
use Data::Dumper;

my $list = [
    {
     Test => "Value"
    }
];

my $get_list_key = [ map { keys %$_ } @$list] ;
print Dumper( $get_list_key );

Вывод :

$VAR1 = [
          'Test'
        ];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...