Подтвердить что ты не робот

Как преобразовать простой хэш в json в Perl?

Я использую следующий код для кодирования простого хэша

use JSON;

my $name = "test";
my $type = "A";
my $data = "1.1.1.1";
my $ttl  = 84600;

@rec_hash = ('name'=>$name, 'type'=>$type,'data'=>$data,'ttl'=>$ttl);

но я получаю следующую ошибку:

hash- or arrayref expected <not a simple scalar, use allow_nonref to allow this>
4b9b3361

Ответ 1

В вашем коде, кажется, отсутствуют некоторые значимые фрагменты, поэтому добавьте недостающие биты (я сделаю некоторые предположения здесь) и исправлю вещи по мере того, как мы идем.

Добавьте отсутствующий шаблон.

#!/usr/bin/perl

use strict;
use warnings;

use JSON;

my $name = "test";
my $type = "A";
my $data = "1.1.1.1";
my $ttl  = 84600;

Сделайте хэш хешем, а не массивом, и не забудьте его локализовать: my %

my %rec_hash = ('name'=>$name, 'type'=>$type,'data'=>$data,'ttl'=>$ttl);

На самом деле используйте метод encode_json (передавая его hashref):

my $json = encode_json \%rec_hash;

Вывести результат:

print $json;

И это работает так, как я ожидал бы без ошибок.

Ответ 2

Попробуйте %rec_hash = .... @ указывает список/массив, а % указывает хэш.