Sie sind auf Seite 1von 4

Wiss.

arbeiten-digital |1

Text zerlegen, kodieren und verknpfen

Die Aufgabe, die wir uns gestellt hatten, lautete: Wir brauchen ein App, das eine
Literaturliste (BDSL) so kodiert, dass sie in Programme zur Analyse und weiteren
Verarbeitung passt.
Dazu war ein Programm zu entwickeln, dessen zentrale Fhigkeit darin bestand,
jede Zeile der Vorlage in ihre Bestandteile (Autor, Titel etc.) zu zerlegen, die
erzeugten Teile mit Code-Elementen zu versehen und wieder zusammenzusetzen.
Als Beispiel nehmen wir eine Zeile unserer BDSL-Literaturliste.
Brutigam, Bernd: Leben wie im Roman : Untersuchungen zum sthetischen
Imperativ im Frhwerk Friedrich Schlegels (1794 -1800) Paderborn [u.a.]:
Schningh 1986. 205 S.
Aus dieser Vorlage wird folgender Textblock erzeugt:
%A Brutigam, Bernd
%T Leben wie im Roman
%T Untersuchungen zum sthetischen Imperativ im Frhwerk Friedrich Schlegels
(1794 -1800) Paderborn [u.a.]
%P 205
%D 1986
%I Schningh
Wiss. arbeiten-digital |2

Die Ausgabe, die hier auf den Bildschirm erfolgt, kann auch in eine Datei
erfolgen. In diesem Fall lautet der Aufruf des Programms dann z.B.:
test.pl > test.txt
Zu den Voraussetzungen, ber die der Entwickler des Programms verfgen soll,
ehrt natrlich Vorwissen ber die Mglichkeiten, die die Programmiersprache
bietet. Je mehr Vorkenntnisse, desto besser. Aber auch mit bescheidenem
Vorwissen kommt man - bei Perl zum Ziel.
Wir arbeiten zunchst mit einer Funktion namens split. Diese zerschneidet die
Zeichenkette $zeile, die den bibliographischen Inhalt darstellt. Der Schnitt erfolgt
an den Doppelpunkten. Durch die Operation sind aus der einen vier
Zeichenketten entstanden. Diese knnen in einem array einer Art Behlter
abgelegt werden und dann via Index zugegriffen werden.
Die Namen von Strings und Arrays sind frei whlbar. Festgelegt ist nur das erste
Zeichen der Benennung. $ fr String und @ fr Array.
Das Ganze knnte vorerst ungefhr so aussehen:
print "\n";
$zeile = "Brutigam, Bernd: Leben wie im Roman : Untersuchungen zum
sthetischen Imperativ im Frhwerk Friedrich Schlegels (1794 -1800)
Paderborn [u.a.]: Schningh 1986. 205 S.\n";
print $zeile;
print "\n";
@elements = split(/:/,$zeile);
print "%A $elements[0]\n";
print "%T $elements[1]\n";

Aufgabe

Wir starten notepad, generieren eine Datei test.pl und legen sie am blichen Ort
ab. Dann geben wir den Text des Programmteils ein und kontrollieren dabei mit
Testlauf Zeile pro Zeile. Dies sollte helfen den Umgang mit dem System bei
Zerlegung und Verknpfung von Strings zu trainieren.

Anschlieend bitte das umfangreichere test2.pl kopieren, am blichen Ort


speichern und testen. Hier der Text von test2.pl:

print "\n";
$zeile = "Brutigam, Bernd: Leben wie im Roman : Untersuchungen zum
sthetischen Imperativ im Frhwerk Friedrich Schlegels (1794 -1800) Paderborn
[u.a.]: Schningh 1986. 205 S.\n";

# Szenario I Teilstring1 und 2:


Wiss. arbeiten-digital |3

print $zeile;
print "\n";
@elements = split(/:/,$zeile);
print "%A $elements[0]\n";
print "%T $elements[1]\n";

# Szenario II Teilstring 3, von dem ein Teilstring Ort abgespalten wird.


$titel = "$elements[2]\n";
@elems =split(/ /,$titel);
$ort1=pop (@elems); $ort2=pop (@elems);
$titel2 = join (" ",@elems);
print "%T $titel2\n";
print "%C $ort2"; print " $ort1";

#Szenario III Teilstring 4, er enthlt Jahres und Seitenzahl, ich habe ihn $etc
genannt.
$etc = "$elements[3]";
chomp $etc;
# mit regex wird Punkt entfernt:
$etc =~ s/\. / /g;
@elems = split (/ /,$etc);
#print "@elems\n";

print "%P $elems[$#elems-1]\n";


print "%D $elems[$#elems-2]\n";
print "%I $elems[$#elems-3]\n";
________________________________________________________________________
Anmerkung:
Sollten in dem Output des Programms seltsame Zeichen erscheinen, bitte
Codepage prfen.
Chcp 1252 am Prompt eingeben.
Der Wert 850, der gewhnlich eingestellt ist, bringt Probleme. Vgl. z. B.
http://www.torsten-horn.de/techdocs/encoding.htm
Wiss. arbeiten-digital |4

Info ber Funktionen wie split, pop, join gibt es ber perldoc -f