Plak Perl aan de linkerkant en klik op "Converteren" — wij maken er XML vanPlak Perl-code

Wat deze tool doet

Als je Perl onderhoudt die ergens XML in duwt — een oude SOAP-service, een XML-gebaseerde config, een CPAN-gedreven integratie — ken je het ritueel: use XML::Simple, frunniken aan ForceArray en KeyAttr, met de hand een hash-ref in elkaar zetten en hopen dat de output klopt met wat de consumer verwacht. Plak de Perl hier en krijg in één keer welgevormde XML terug — een blessed object, een simpele hash-ref of een compleet package met constructor en accessors.

De converter leest de gebruikelijke Perl OO-patronen netjes in. Een constructor die bless $self, $class doet met een hash-ref wordt een XML-element waarvan de kinderen de hash-keys spiegelen. Array-refs worden container-elementen met één kind per entry (de kind-tag is standaard de enkelvoudsvorm van de key, dus items => [...] wordt <items><item/>...</items>). Geneste hash-refs worden geneste elementen. undef wordt een leeg element in plaats van gedropt, zodat de vorm overeenkomt met wat XML::Simple of XML::LibXML in een round-trip zouden opleveren.

Je kunt meerdere package-blokken in één keer plakken — package Order; package OrderItem; package Address; — en elk package komt eruit met zijn door de constructor gezette velden uitgeklapt. Platte niet-OO datastructuren werken ook: geef my $data = { ... }; mee en de tool loopt door de refs, waarbij hash-keys als elementnamen behouden blijven. Voor de diepere Perl-regels hierachter is de officiële perldoc de referentie.

Hoe je het gebruikt

Drie stappen. Werkt hetzelfde of je nu een tienregelig package plakt of een hele module met helpers.

1

Plak je Perl (of laad het voorbeeld)

Gooi de code zoals die is in de linker editor. Een package met constructor, een simpele hash-ref, geneste packages of een mix — alles mag. Druk op Voorbeeld laden om eerst een realistisch voorbeeld te zien.

Je hoeft use strict;, use warnings; of je require-lijst niet weg te halen. Laat de code zoals ie in je editor staat. Gewoon plakken.

2

Klik op Converteren

Klik op de groene Converteren-knop. De tool leest de package-declaraties, lost de blessed references op en bouwt de XML in één keer. Er draait een korte loading-indicator terwijl hij bezig is.

3

Kopieer de XML

Het rechterpaneel vult zich met geïndenteerde, welgevormde XML die elke standaardconforme parser accepteert. Kopieer hem direct naar je CPAN-workflow, een legacy SOAP-integratie, een XML-config of een test-fixture.

Wanneer dit echt uitkomt

Voeden van XML::LibXML of XML::Simple

Je hebt een Perl-datastructuur en wilt precies zien hoe het eruitziet als XML voor je <code>XMLout</code> / <code>XML::LibXML::Document</code> aansluit. Plakken, converteren, kopiëren, vergelijken.

Integratie met legacy systemen

Een op CPAN gebaseerde integratie verwacht nog steeds SOAP 1.1 of een eigen XML-formaat. Plak je Perl-representatie en krijg een realistische body om aan SoapUI of curl te voeren.

Weg van Perl

Vervang je een oude Perl-service door iets anders? Exporteer de datavorm eerst als XML — dat is de neutrale grond om naar Python, Java of C# te porten.

Docs die bij de code passen

Genereer XML-voorbeelden voor de README van een <a href="https://metacpan.org/" target="_blank" rel="noopener">MetaCPAN</a>-module of voor een interne wiki direct uit je echte packages, zodat de documentatie niet gaat afwijken.

Veelgestelde vragen

Kan ik meerdere packages tegelijk plakken?

Ja — plak een hele .pm of meerdere package-blokken op elkaar gestapeld. Elk package komt eruit met de door de constructor gezette hash-keys uitgeklapt en geneste object-refs opgelost. Als Order een array-ref van OrderItem-objecten en een shipping_address hash-ref heeft, komen alle drie in de output.

Hoe gaat het om met undef en ontbrekende keys?

Een key met waarde undef wordt een leeg element, zodat de XML-vorm stabiel blijft tussen instanties. Keys die helemaal niet in de hash zitten, worden weggelaten. Array-refs met lege arrays worden lege container-elementen (<items></items>) in plaats van gedropt.

Werken array-refs en hash-refs hetzelfde?

Een array-ref wordt een container-element met één kind per entry — standaard is de kind-tag de enkelvoudsvorm van de key (dus items => [...] geeft <items><item/>...</items>). Een hash-ref wordt een genest element waarvan de kinderen de keys spiegelen. Gemengde refs (array van hash-refs, hash van arrays) nesten op dezelfde manier recursief.

Hoe zit het met blessed references en meervoudige overerving?

Blessed references houden hun klassenaam beschikbaar — die kan als element-tag dienen als dat logisch is. Bij meervoudige overerving via @ISA of Moose/Moo-rollen komen de attributen van het uiteindelijk samengestelde object door; we proberen de overervingsgraaf niet te reconstrueren in XML.

Wordt mijn code opgeslagen?

Je code gaat naar de backend voor de conversie en wordt niet bewaard — we loggen de payload niet. Als de Perl gevoelig is (credentials in literals, interne URL's), kijk hem dan even snel na voor je hem plakt, net als bij elke online tool.

Wat als de Perl subroutine-refs of tie gebruikt?

Code-refs en tied variabelen komen eruit als lege elementen in plaats van de hele conversie te laten klappen. Het datadeel van je structuur komt er gewoon door. Als de code zelf syntaxfouten heeft, los eerst de voor de hand liggende op zodat de parser iets schoons heeft om mee te werken.

Andere tools die je kunt gebruiken

Perl naar XML is één stukje van de puzzel. Deze tools passen er goed bij: