/ / Comment convertir le hash perl en hash javascript - javascript, perl, template-toolkit

Comment convertir le hash perl en javascript hash - javascript, perl, template-toolkit

Je travaille dans boîte à outils de modèles cadre. J'ai un type de données de hachage Perl dans mon fichier tt. Je veux convertir ce type de données de hachage au type de données de hachage javascript.

code: modèle:

        [% PERL %]
use JSON qw(encode_json);

my $vars = {

"version"  => 3.14,
"days"     => [ qw( mon tue wed thu fri sat sun ) ],
"cgi"      => CGI->new(),
"me"       => {
"id"     => "abw",
"name"   => "Andy Wardley",
},
};

my $json = encode_json($vars->{"me"});
[% END %]


<script>
function callme(){
var me = [% $json %]
}
</script>

Maintenant, je veux que le hash me soit accessible en javascript

Réponses:

3 pour la réponse № 1

Il existe plusieurs plugins TT disponibles pour le faire, l'un quelconque étant une meilleure solution que l'incorporation de Perl brut dans votre modèle. Personnellement, je préfère JSON :: Escape, mais il y en a quelques autres. En plus de cinq ans d’écriture de TT plus ou moins quotidiennement, je n’ai encore jamais eu recours à la [% PERL %] directif. Je ne suis pas en train d’écrire en CGI, je suppose. YMMV.

[%- USE JSON.Escape( pretty => 1 );
SET me = { id => "abw", name => "Andy Wardley" };
...
-%]

<script>
function callme() {
var me = [% me.json %]
...
</script>

2 pour la réponse № 2

Essayez d'utiliser JSON de CPAN. Ses JavaScript Simple Notation Notation et vous l'utilisez directement en JavaScript.

use JSON qw(encode_json);

my $vars = {

"version"  => 3.14,
"days"     => [ qw( mon tue wed thu fri sat sun ) ],
"cgi"      => CGI->new(),
"me"       => {
"id"     => "abw",
"name"   => "Andy Wardley",
},
};
print encode_json($vars->{"me"});

Sortie:

{"name":"Andy Wardley","id":"abw}