Produkte
→
DeuPAD
DeuPAD Ressourcen
PAD lesen mit Perl
Der Workshop zeigt, wie mit einfachsten Mitteln unter Verwendung der Sprache Perl Daten aus PAD Dateien extrahiert werden können.
Ziel dieses Workshops
Wir möchten mit Hilfe der Sprache Perl Daten aus einer PAD Datei gewinnen um diese nach unserem Bedarf weiter zu verarbeiten.
Typische Anwendungsbeispiele
Als Hersteller von Shareware oder Freeware möchten wir die Daten unserer PAD Dateien verwenden um mit Hilfe einiger Perl Skripte Dateien aus den PAD Daten zu generieren. Dies können z.B. Hilfe-, Readme- oder Installationsdateien sein, aber auch das Erzeugen von Webseiten aus den PAD Daten kommt in Frage.
Als Webmaster eines Softwarearchivs möchten wir aus den Daten der PAD Dateien die Webseiten des Archivs generieren.
Vorgehensweise
Wir verwenden eine einfache Perl Routine zum Durchsuchen der PAD Datei nach den gewünschten Informationen.
Wir erstellen ein Skript, welches diese Routine zur Ausgabe bestimmter Felder der PAD Datei verwendet.
Die Schritte im Einzelnen
Hier ist eine sehr einfache Routine zum Auffinden des Inhalts eines bestimmten Felds in einer PAD Datei. Die Routine berücksichtigt, dass im PAD Format nur die grundlegendsten Bestandteile des XML Formats verwendet werden.
Wir erstellen ein Skript, welches diese Routine zur Ausgabe bestimmter Felder der PAD Datei verwendet.
sub get_value {
$xml_ = $xml;
foreach $tag (@_) {
$xml_ =~ /(<$tag>)/ || return "";
$xml_ = $';
}
$xml_ =~ /</;
return $`;
}
Die Routine erwartet den Inhalt der PAD Datei in der Variablen $xml. Ein beispielhafter Aufruf der Routine mit
$xml = "<Parent><Child>Hello
World!</Child></Parent>";
print get_value("Parent", "Child");
würde folgende Ausgabe bewirken:
> Hello World!
Wir möchten nun ein kurzes Perl Skript schreiben, welches das Feld "Programmname" aus einer PAD Datei extrahiert und ausgibt.
Das Skript mit Namen demo.pl soll den Dateinamen der PAD Datei als Aufrufparameter übernehmen.
Das Feld "Programmname" ist in der PAD Datei mit dem Namen "Program_Name" der Kategorie "Program_Info" untergeordnet, diese ist wiederum "XML_DIZ_INFO" untergeordnet. Ein Ausschnitt aus einer PAD Datei (pad_file.xml):
<XML_DIZ_INFO>
<Program_Info>
<Program_Name>DeuPAD
Editor</Program_Name>
</Program_Info>
</XML_DIZ_INFO>
Unser Skript demo.pl sieht also so aus:
#!/usr/bin/perl
# Lese XML Datei (Parameter des Skriptaufrufs)
# in die Variable $xml ein
undef($/);
$xml = <>;
# Falls die XML-Datei UTF-8 kodiert ist, Sonderzeichen umwandeln
if ( $xml =~ /<?xml [^>]*encoding=[\'\"]UTF-8[\'\"][^>]*>.*/ ) {
$xml =~ s/\xc2//g;
$xml =~ s/\xc3(.)/chr(ord($1) + 0x40)/eg;
}
# Gebe Programmname aus der PAD Datei aus
print get_value("XML_DIZ_INFO",
"Program_Info", "Program_Name");
sub get_value {
$xml_ = $xml;
foreach $tag (@_) {
$xml_ =~ /(<$tag>)/ || return "";
$xml_ = $';
}
$xml_ =~ /</;
return $`;
}
Der Aufruf mit o.g. PAD Datei pad_file.xml ergibt also folgende Ausgabe:
> perl demo.pl pad_file.xml
> DeuPAD Editor
Zusammenfassung
In diesem Workshop wurde gezeigt, wie einfach es ist, mit Perl PAD Dateien auszulesen. Aufbauend auf der vorgestellten Routine kann nun mit einigen Zeilen Perl z.B. auf dem Wege der Textersetzung aus Dateivorlagen jede beliebige Textdatei aus den PAD Daten erstellt werden.
Da Perl sowohl unter Unix, als auch unter MS Windows verfügbar ist, eignet sich die Vorgehensweise auch für den Einsatz direkt auf einem Webserver.
Ähnliche Vorgehensweisen
Perl bietet selbstverständlich umfangreichere Unterstützung für XML, als in diesem
Workshop dargestellt. Momentan existieren sowohl Parser (XML::Parser) für XML, als
auch eine Portierung des XML Document Object Model (XML::DOM) in Perl Modulen.
Weiterführende Informationen und Beispiele finden Sie auf
http://www.perl.com und
http://www.xml.com.
Um Dateivorlagen (sog. Templates) mit den Daten aus einer PAD Datei zu füllen können Sie auch das Programm DeuPAD Editor oder DeuPAD Reader bemühen. Beide Programme unterstützen im Batch-Betrieb eine Aufrufsyntax, welche eine PAD Datei und eine Dateivorlage einliest und daraus eine neue Datei generiert. Mehr Informationen finden Sie in den ReadMe Dateien dieser Werkzeuge und in einem weiteren Workshop, der sich mit diesem Thema befasst.
Mehr Ressourcen...
|