Füge Perl links ein und klick auf "Konvertieren" — wir machen XML darausPerl-Code einfügen

Was dieses Tool macht

Wenn du Perl wartest, das irgendwo XML reinschiebt — einen älteren SOAP-Dienst, eine XML-basierte Konfiguration, eine CPAN-getriebene Integration — kennst du das Ritual: use XML::Simple, mit ForceArray und KeyAttr kämpfen, eine Hash-Ref von Hand zusammenschrauben und hoffen, dass die Ausgabe dem entspricht, was der Konsument erwartet. Füg den Perl-Code hier ein und bekomm wohlgeformtes XML in einem Rutsch — ein blessed-Objekt, eine schlichte Hash-Ref oder ein ganzes Package mit Konstruktor und Accessoren.

Der Konverter liest die üblichen Perl-OO-Muster sauber. Ein Konstruktor, der bless $self, $class mit einer Hash-Ref macht, wird zu einem XML-Element, dessen Kinder die Hash-Keys spiegeln. Array-Refs werden zu Container-Elementen mit einem Kind pro Eintrag (der Kind-Tag ist standardmäßig die Singularform des Keys, also items => [...] wird zu <items><item/>...</items>). Verschachtelte Hash-Refs werden zu verschachtelten Elementen. undef wird zu einem leeren Element statt weggelassen, damit die Form zu dem passt, was XML::Simple oder XML::LibXML im Round-Trip liefern würden.

Du kannst mehrere package-Blöcke auf einmal einfügen — package Order; package OrderItem; package Address; — und jeder kommt mit seinen vom Konstruktor gesetzten Feldern aufgeklappt raus. Auch schlichte, nicht-OO-Datenstrukturen gehen: füttere my $data = { ... };, und das Tool geht durch die Refs und behält die Hash-Keys als Element-Namen. Für die tieferen Perl-Regeln dahinter ist der offizielle perldoc die Referenz.

So benutzt du es

Drei Schritte. Funktioniert gleich, egal ob du ein zehnzeiliges Package einfügst oder ein ganzes Modul samt Helfern.

1

Perl einfügen (oder Beispiel laden)

Schmeiß den Code einfach in den linken Editor. Ein package mit Konstruktor, eine einfache Hash-Ref, verschachtelte Packages oder ein Mix — alles okay. Klick auf Beispiel laden, um erst mal ein realistisches Beispiel zu sehen.

Du musst use strict;, use warnings; oder deine require-Liste nicht rausstreichen. Lass den Code so, wie er in deinem Editor aussieht. Einfach einfügen.

2

Auf Konvertieren klicken

Klick den grünen Konvertieren-Button. Das Tool liest die Package-Deklarationen, löst die blessed-Referenzen auf und baut das XML in einem Zug. Während es arbeitet, läuft ein kurzer Ladeindikator.

3

XML kopieren

Das rechte Panel füllt sich mit eingerücktem, wohlgeformtem XML, das jeder standardkonforme Parser akzeptiert. Kopiere es direkt in deinen CPAN-Workflow, eine Legacy-SOAP-Integration, eine XML-basierte Config-Datei oder eine Test-Fixture.

Wann das wirklich hilft

Input für XML::LibXML oder XML::Simple

Du hast eine Perl-Datenstruktur und willst genau sehen, wie sie als XML aussieht, bevor du <code>XMLout</code> / <code>XML::LibXML::Document</code> verdrahtest. Einfügen, konvertieren, kopieren, vergleichen.

Integration mit Legacy-Systemen

Eine CPAN-gestützte Integration erwartet immer noch SOAP 1.1 oder ein eigenes XML-Format. Füg deine Perl-Repräsentation ein und bekomm einen realistischen Body für SoapUI oder curl.

Weg von Perl migrieren

Du ersetzt einen alten Perl-Dienst durch etwas anderes? Exportier die Datenform erst mal als XML — das ist das neutrale Terrain, um nach Python, Java oder C# zu portieren.

Docs, die zum Code passen

Erzeug XML-Beispiele für das README eines <a href="https://metacpan.org/" target="_blank" rel="noopener">MetaCPAN</a>-Moduls oder fürs interne Wiki direkt aus deinen echten Packages, damit die Doku nicht abdriftet.

Häufige Fragen

Kann ich mehrere Packages auf einmal einfügen?

Ja — füg eine ganze .pm-Datei oder mehrere gestapelte package-Blöcke ein. Jedes Package kommt mit seinen vom Konstruktor gesetzten Hash-Keys aufgeklappt und verschachtelten Objekt-Refs aufgelöst raus. Wenn Order eine Array-Ref von OrderItem-Objekten und eine shipping_address-Hash-Ref hält, landen alle drei in der Ausgabe.

Wie behandelt es undef und fehlende Keys?

Ein Key mit dem Wert undef wird ein leeres Element, damit die XML-Form zwischen Instanzen stabil bleibt. Keys, die ganz fehlen, werden weggelassen. Array-Refs mit leeren Arrays werden leere Container-Elemente (<items></items>), nicht einfach verworfen.

Funktionieren Array-Refs und Hash-Refs gleich?

Eine Array-Ref wird ein Container-Element mit einem Kind pro Eintrag — standardmäßig ist der Kind-Tag die Singularform des Keys (also items => [...] ergibt <items><item/>...</items>). Eine Hash-Ref wird ein verschachteltes Element, dessen Kinder die Keys spiegeln. Gemischte Refs (Array von Hash-Refs, Hash von Arrays) verschachteln rekursiv gleich.

Und blessed References und Mehrfachvererbung?

Blessed References behalten ihren Klassennamen verfügbar — er kann als Element-Tag genutzt werden, wenn es passt. Bei Mehrfachvererbung über @ISA oder Moose/Moo-Rollen kommen die Attribute des finalen komponierten Objekts durch; wir versuchen nicht, den Vererbungsgraphen in XML zu rekonstruieren.

Wird mein Code gespeichert?

Dein Code geht zum Backend zur Konvertierung und wird nicht persistiert — wir loggen den Payload nicht. Wenn der Perl-Code sensibel ist (Credentials in Literalen, interne URLs), schau ihn vorher kurz durch, wie bei jedem Online-Tool.

Was, wenn der Perl-Code Subroutine-Refs oder tie benutzt?

Code-Refs und tied-Variablen werden als leere Elemente ausgegeben, statt die ganze Konvertierung scheitern zu lassen. Der Datenteil deiner Struktur kommt trotzdem durch. Wenn der Code selbst Syntaxfehler hat, behebe die offensichtlichen zuerst, damit der Parser etwas Sauberes zum Arbeiten hat.

Weitere Tools, die du brauchen könntest

Perl zu XML ist ein Teil des Puzzles. Diese Tools passen gut dazu: