web-dev-qa-db-ja.com

Perlで単純なハッシュをJSONに変換する方法は?

私は次のコードを使用して単純なハッシュをエンコードしています

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>
29
Steve

あなたのコードにはいくつかの重要なチャンクが欠けているようですので、欠けているビットを追加して(ここでいくつかの仮定を行います)、私たちが行くにつれて物事を修正しましょう。

欠落している定型句を追加します。

#!/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;

そして、それは私がエラーなしで期待するように機能します。

57
Quentin

%rec_hash = ...代わりに。 @はリスト/配列を示し、%はハッシュを示します。

4
Marius Kjeldahl