Colle du Perl à gauche et clique sur "Convertir" — on le transforme en XMLColle du code Perl

À quoi sert cet outil

Si tu maintiens du Perl qui alimente du XML où que ce soit — un vieux service SOAP, une config à base de XML, une intégration CPAN — tu connais le rituel : use XML::Simple, bricoler ForceArray et KeyAttr, monter une ref de hash à la main et espérer que la sortie soit ce que le consommateur attend. Colle le Perl ici et récupère du XML bien formé en une passe — un objet blessed, une simple ref de hash, ou un package complet avec constructeur et accesseurs.

Le convertisseur lit proprement les patterns OO habituels de Perl. Un constructeur qui fait bless $self, $class avec une ref de hash devient un élément XML dont les enfants reflètent les clés du hash. Les refs de tableau deviennent des éléments conteneurs avec un enfant par entrée (nommé d’après la forme singulière de la clé, donc items => [...] devient <items><item/>...</items>). Les refs de hash imbriquées deviennent des éléments imbriqués. undef devient un élément vide au lieu d’être oublié, pour que la forme colle à ce que XML::Simple ou XML::LibXML produiraient en round-trip.

Tu peux coller plusieurs blocs package d’un coup — package Order; package OrderItem; package Address; — et chacun ressort avec ses champs assignés par le constructeur développés. Les structures de données non-OO fonctionnent aussi : passe my $data = { ... }; et l’outil parcourt les refs en gardant les clés de hash comme noms d’éléments. Pour les règles plus profondes de Perl derrière tout ça, le perldoc officiel est la référence.

Comment s’en servir

Trois étapes. Ça marche pareil que tu colles un package de dix lignes ou un module complet avec ses helpers.

1

Colle ton Perl (ou charge l’exemple)

Dépose le code dans l’éditeur de gauche tel quel. Un package avec constructeur, une simple ref de hash, des packages imbriqués ou un mélange — tout passe. Clique sur Charger un exemple pour voir un cas réaliste d’abord.

Pas besoin de virer use strict;, use warnings; ni ta liste de require. Laisse le code comme il est dans ton éditeur. Tu colles, c’est tout.

2

Clique sur Convertir

Clique sur le bouton vert Convertir. L’outil lit les déclarations de package, résout les références blessed et construit le XML en une passe. Un petit indicateur de chargement tourne pendant ce temps.

3

Copie le XML

Le panneau de droite se remplit de XML bien formé et indenté que n’importe quel parser conforme aux standards acceptera. Copie-le directement dans ton flux CPAN, une intégration SOAP legacy, un fichier de config XML ou une fixture de test.

Quand c’est vraiment utile

Alimenter XML::LibXML ou XML::Simple

Tu as une structure de données Perl et tu veux voir exactement à quoi elle ressemble en XML avant de câbler <code>XMLout</code> / <code>XML::LibXML::Document</code>. Colle, convertis, copie, compare.

Intégration avec des systèmes legacy

Une intégration adossée à CPAN attend toujours du SOAP 1.1 ou un format XML maison. Colle ta représentation Perl et obtiens un corps réaliste à envoyer à SoapUI ou curl.

Sortir de Perl

Tu remplaces un vieux service Perl par autre chose ? Exporte d’abord la forme des données en XML — c’est le terrain neutre pour porter vers Python, Java ou C#.

Des docs qui collent au code

Génère des exemples XML pour le README d’un module <a href="https://metacpan.org/" target="_blank" rel="noopener">MetaCPAN</a> ou un wiki interne directement à partir de tes vrais packages, pour que la doc ne dérive pas.

Questions fréquentes

Je peux coller plusieurs packages d’un coup ?

Oui — colle un fichier .pm entier ou plusieurs blocs package empilés. Chaque package ressort avec ses clés de hash assignées par le constructeur développées et ses refs d’objets imbriquées résolues. Si Order contient une ref de tableau d’objets OrderItem et une ref de hash shipping_address, les trois se retrouvent dans la sortie.

Comment il gère undef et les clés manquantes ?

Une clé dont la valeur est undef devient un élément vide pour que la forme du XML reste stable entre instances. Les clés carrément absentes du hash sont omises. Les refs de tableau vides deviennent des éléments conteneurs vides (<items></items>) plutôt que d’être jetées.

Les refs de tableau et de hash fonctionnent pareil ?

Une ref de tableau devient un élément conteneur avec un enfant par entrée — par défaut, le tag enfant est la forme singulière de la clé (donc items => [...] donne <items><item/>...</items>). Une ref de hash devient un élément imbriqué dont les enfants reflètent les clés. Les refs mixtes (tableau de refs de hash, hash de tableaux) s’imbriquent pareil récursivement.

Et les références blessed et l’héritage multiple ?

Les références blessed gardent leur nom de classe disponible — il peut servir de tag d’élément quand ça a du sens. Pour l’héritage multiple via @ISA ou les rôles Moose/Moo, les attributs de l’objet composé final sortent ; on n’essaie pas de reconstruire le graphe d’héritage en XML.

Mon code est stocké ?

Ton code est envoyé au backend pour la conversion et n’est pas persisté — on ne log pas le payload. Si le Perl est sensible (identifiants en dur, URLs internes), jette-y un œil avant de coller, comme pour n’importe quel outil en ligne.

Et si le Perl utilise des refs de subroutine ou tie ?

Les refs de code et les variables tied sortent en éléments vides plutôt que de faire planter toute la conversion. La partie données de ta structure passe quand même. Si le code a des erreurs de syntaxe, corrige les plus évidentes d’abord pour que le parser ait quelque chose de propre à lire.

Autres outils qui peuvent servir

Perl vers XML, c’est une pièce du puzzle. Ces outils vont bien avec :