Über's Holzschnitzen und Textschnitzen

"So wie der Schreiner das Holz bearbeitet, bearbeiten pragmatische
Programmierer Text",
schreiben Andrew Hunt und David Thomas in ihrem bekannten Buch
"Der Pragmatische Programmierer".
Mit mächtigen Scriptsprachen mit Fähigkeiten zur
effizienten Textbearbeitung und mit regulären Ausdrücken ist
es gar nicht schwer, "wie mit der Fräsmaschine" über Texte
herzufallen. Dazu ein keines Beispiel mit perl:
:
Ein Text soll in Stücke "gehauen" werden. jedes Stück
soll nicht länger als 130 Zeichen sein, und es sollen
keine Wörter zertrennt werden. Diese Beispiel ist nicht
aus der Luft gegriffen,sondern stammt aus einem E-Mail/SMS
Gateway, programmiert mit perl und gnokii,
dem GNU Nokia Toolkit.
In der ersten Zeile wird eine als Parameter übergebene Datei,
oder bei deren Abwesenheit alles was von STDIN kommt,
in die Variable $input eingelesen.
Daran anschließend wird der Text dann entsprechend der
oben spezifizierten Regeln aufgespalten.
Dank der mächtigen regulären Ausdrücke in perl ist dies in
einer einzigen Zeile möglich: Der Ausdruck .{1,130}\s
passt auf jedes Stück Text, welches aus beliebigen Zeichen
besteht, zwischen einem und hundertdreißig Zeichen lang ist,
und mit einem Leerzeichen aufhört. Alle so gefundenen Stücke
werden von perl "automagisch" an ein Array @splitted
übergeben.
Am Ende wird dann alles in einer kleinen Schleife ausgegeben.
#!/usr/bin/perl
my $input = join ("",<>);
my @splitted = $input =~ m/.{1,130}\s/gs;
foreach(@splitted) {
print $_ . "\n" . "-" x 60 . "\n";
};
Füttert man das Programm mit dem folgenden
Beispieltext (Aus der xskat(6) man page)
Text
Jeder Spieler, beginnend mit Vorhand, darf den Skat aufnehmen und 2 Karten verdeckt weitergeben. Es ist nicht erlaubt, Buben zu schieben. Der Spielwert wird verdoppelt für jedes Mal, das ein Spieler den Skat nicht aufnimmt. Spiele keinen Schieberamsch (Voreinstellung). Am Ende des Ramschspiels geht der Skat an den(die) Verlierer, wodurch sich der Verlust erhöht. Der Skat geht an den Gewinner des letzten Stichs (Voreinstellung). Er- laube den Gegnern 'Kontra' zu sagen, was den Wert des Spiels ver- doppelt. Der Alleinspieler kann mit 'Re' antwortet, was eine weitere Verdoppelung bewirkt. Verbiete Kontra (Voreinstellung). Nur ein Gegner der wenigstens 18 gesagt hat, darf 'Kontra' sagen. Spiele eine Bock-Runde nach einem besonderen Ereignis. Der Spielwert der folgenden 3 Spiele wird verdoppelt. Wenn innerhalb einer Bock-Runde ein weiteres Bock-Ereignis eintritt oder mehrere Bock-Ereignisse gleichzeitig geschehen, wird die entsprechende Zahl Bock-Runden zusätzlich gespielt. Spiele keine Bock-Runden (Voreinstellung). Spiele eine Runde Ramsch nach jeder Bock- Runde. Bevor ein Ramsch beginnt, darf jeder Spieler, beginnend mit Vorhand, erklären, ob er lieber Grand Hand spielen will. Nach einem Grand Hand gibt derselbe Spieler nochmal, weil dieses Spiel nicht zu den 3 Spielen der Ramsch-Runde zählt.so liefert es dieses Ergebnis:
Jeder Spieler, beginnend mit Vorhand, darf den Skat aufnehmen und 2 Karten verdeckt weitergeben. Es ist nicht erlaubt, Buben zu ------------------------------------------------------------ schieben. Der Spielwert wird verdoppelt für jedes Mal, das ein Spieler den Skat nicht aufnimmt. Spiele keinen Schieberamsch ------------------------------------------------------------ (Voreinstellung). Am Ende des Ramschspiels geht der Skat an den(die) Verlierer, wodurch sich der Verlust erhöht. Der Skat geht an ------------------------------------------------------------ den Gewinner des letzten Stichs (Voreinstellung). Er- laube den Gegnern 'Kontra' zu sagen, was den Wert des Spiels ver- doppelt. ------------------------------------------------------------ Der Alleinspieler kann mit 'Re' antwortet, was eine weitere Verdoppelung bewirkt. Verbiete Kontra (Voreinstellung). Nur ein Gegner ------------------------------------------------------------ der wenigstens 18 gesagt hat, darf 'Kontra' sagen. Spiele eine Bock-Runde nach einem besonderen Ereignis. Der Spielwert der ------------------------------------------------------------ folgenden 3 Spiele wird verdoppelt. Wenn innerhalb einer Bock-Runde ein weiteres Bock-Ereignis eintritt oder mehrere ------------------------------------------------------------ Bock-Ereignisse gleichzeitig geschehen, wird die entsprechende Zahl Bock-Runden zusätzlich gespielt. Spiele keine Bock-Runden ------------------------------------------------------------ (Voreinstellung). Spiele eine Runde Ramsch nach jeder Bock- Runde. Bevor ein Ramsch beginnt, darf jeder Spieler, beginnend mit ------------------------------------------------------------ Vorhand, erklären, ob er lieber Grand Hand spielen will. Nach einem Grand Hand gibt derselbe Spieler nochmal, weil dieses Spiel ------------------------------------------------------------ nicht zu den 3 Spielen der Ramsch-Runde zählt. ------------------------------------------------------------Nichts als "saubere Schnitte" sozusagen. Einige Nacharbeiten mit "feinerem Schleifpapier" wie zum Beispiel das Entfernen mehrfacher Leerzeichen oder der Zeilenumbrüche sind hier allerdings noch erforderlich.
Alle Touren
Schneebergwege
Raxsteige
- Alpenvereinssteig
- Altenbergsteig
- Bärenlochsteig
- Brandschneide
- Gamsecksteig
- Göbl Kühn-Steig
- Großer Kesselgraben
- Kontruszsteig
- Kronich Eisenweg
- Gretchensteig
- Großes Fuchsloch
- Ho Chi Minh Pfad
- Hoyossteig
- Karl Kantner-Steig
- Martinsteig
- Peter Jokel-Steig
- Preinerwandsteig
- Raxenmäuersteig
- Reisstalersteig
- Schlangenweg
- Wildfährte
- Teufelsbadstubensteig
- Törlweg
- Waxriegelsteig