Cola o Perl à esquerda e clica em "Converter" — a gente transforma em JSONCola código Perl

O que essa ferramenta faz

Se você já ficou encarando um hash ref de Perl bem aninhado tentando escrever o JSON equivalente na mão, você conhece a dor — => vs :, chaves entre aspas, strings escapadas, tudo junto. Cola o Perl aqui e recebe de volta JSON válido sem reescrever nada. Aceita um único hash ref {...}, uma sequência de declarações my $x = {...}; my $y = [...];, ou algo com cinco níveis de array refs dentro de hash refs dentro de mais hash refs.

O resultado bate com o que JSON::PP ou Cpanel::JSON::XS dariam com canonical => 1. Hash refs viram objetos JSON, array refs viram arrays, undef vira null, números continuam números e strings continuam strings. A ambiguidade clássica da documentação do Perl entre "1" e 1 é resolvida do jeito de sempre — se parece número, sai como número JSON.

Referências blessed (a versão Perl de objetos) são desembrulhadas até o hash ref interno, então um bless { ... }, "Order" sai como um objeto JSON simples com as mesmas chaves. Os valores sentinela JSON::true, JSON::false e JSON::null são convertidos para os equivalentes JSON. Várias declarações no topo acabam como chaves na saída JSON, nomeadas pela variável.

Como usar

Três passos. O mesmo funcionamento se você cola um hash ref pequeno ou um dump inteiro de configuração.

1

Cola o seu Perl (ou testa o exemplo)

Joga o Perl no editor da esquerda como está. Um hash ref, um array ref, várias declarações ou um objeto blessed — tudo bem. Clica em Carregar exemplo se quiser ver um caso realista.

Deixa a sintaxe de referência como está — \%hash, \@array, {...}, [...]. O parser entende tudo.

2

Clica em Converter

Clica no botão verde Converter. A ferramenta percorre a estrutura Perl, resolve as referências e monta o JSON em uma só passada.

3

Copia o JSON

O painel da direita mostra JSON indentado, pronto pra um payload de API, um arquivo de fixture ou um teste de módulo CPAN. Copia e segue.

Quando isso realmente ajuda

Migrar de Storable ou Data::Dumper

Você tem anos de dumps de hashes Perl legados e precisa entregar pra uma API moderna — JSON é a língua franca. Cola e recebe JSON decente sem escrever encoder.

Alimentar um endpoint REST a partir de um script Perl

Seu cron job monta um hash ref a partir de uma consulta ao banco. Antes de disparar pra uma API REST, cola aqui pra conferir se o formato do JSON bate com o que o servidor espera.

Escrever fixtures de teste

Pega um hash ref direto de um teste de módulo Perl, converte pra JSON, joga num arquivo .json de fixture pra testes entre linguagens.

Compartilhar config com devs não-Perl

Um arquivo de config em Perl usa hash refs por toda parte. Converte pra JSON pra que o time de Node, Go ou Python consiga ler sem instalar Perl.

Dúvidas comuns

Funciona com objetos blessed?

Sim. Um hash ref blessed (por exemplo bless { id => 1 }, "Order") é tratado como o hash ref subjacente — o nome da classe é descartado e as chaves/valores saem como um objeto JSON comum. É o mesmo comportamento do JSON::PP com convert_blessed.

E o <code>undef</code>, <code>JSON::true</code>, <code>JSON::false</code>?

undef vira null no JSON. JSON::true / \1 vira true, JSON::false / \0 vira false. São as convenções booleanas padrão do Cpanel::JSON::XS.

Posso colar saída de <code>Data::Dumper</code>?

Pode — a saída do Data::Dumper (no formato $VAR1 = {...};) é parseada sem problema. O $VAR1 = no início é tratado como nome de variável e vira a chave externa.

Como números e strings são tratados?

Perl é meio frouxo com essa diferença. O conversor segue a regra comum: literais numéricos sem aspas (42, 3.14) viram números JSON, e qualquer coisa entre aspas ("42") continua string JSON. Se você quer uma string que parece número, coloca entre aspas.

Meu código fica guardado?

Seu código vai pro backend só pra conversão e não é persistido — a gente não loga o payload. Se o hash ref tiver credenciais reais, troca antes de colar.

E se eu colar vários hash refs?

Cada my $name = {...}; no topo vira uma chave no JSON de saída, com o nome da variável. Estruturas anônimas recebem "_1", "_2", etc. Nada é descartado em silêncio.

Outras ferramentas que podem ajudar

Perl para JSON combina bem com o resto do kit: