В вашем коде, похоже, отсутствуют некоторые существенные куски, поэтому давайте добавим недостающие биты (я сделаю некоторые предположения здесь) и исправим ситуацию по ходу работы.
Добавить недостающий шаблон.
#!/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
(передавая хеш-код):
my $json = encode_json \%rec_hash;
Вывести результат:
print $json;
И это работает, как я ожидал, без ошибок.