Perl Programmierung - Grundkurs
die eine Schleife, dann die andere. Dann bekommen Sie 5+3 Durchläufe.
Das zweite Beispiel ist schwieriger, weil die Grenze der inneren Schleife variabl ist.
for (my $no1=0; $no1 < 3; ++$no1) {
for (my $no2=0; $no2 < $no1; ++$no2) {
print "wie oft?"; # 3-mal
}
}
Um zu verstehen, wie die 3 zu Stande kommt, schreiben wir die Anzahl der Durchläufe für die innere Schleife auf.
Durchlauf äußere Schleife
Wert von $no1
Durchläufe innere Schleife
1.
0
0
2.
1
1
3.
2
2
Die drei Durchläufe erklären sich als 0+1+2 . Was wäre, wenn die Grenze der äußeren Schleife nichtfreundlicherweise 3 wäre, sondern 101 ? Sie können in Ihrer Formelsammlung nach einer
Formel suchen für die Summe der Zahlen von 1 . 100 - 100 , da wir kleiner 101 verlangen -
oder die Zahlen so notieren:
1 100
2 99
3 98
....
Sie bekommen 50 Zeilen mit der Summe 101, also 5050 Durchläufe. Probieren Sie es aus.
Das dritte Beispiel ist eigentlich wieder einfach: Eine Endlos-Schleife:
for (my $no1=0; $no1 < 3; ++$no1) {
for (my $no2=0; $no2 >= $no1; ++$no2) {
print "wie oft?"; # unendlich
}
}
Lösung zu Übung 2:
#!/usr/bin/perl -w
use strict;
while(my $zeile = <>) {
last if $zeile =~ /^__END__$/;
print $zeile;
}
Übungsblatt 5
Übung 1: Binär kopiert
Schreiben Sie ein Kopierprogramm, das auch binäre Daten korrekt kopiert. Die Namen der beiden Dateien sollen als Parameter in der Kommandozeile übergeben werden.
Übung 2: Serienbrief
In dieser Aufgabe spielen wir das Prinzip einer kleinen Serienbrief-Funktion durch. Zwar werden Sie die einfachen Texte, die wir bearbeiten, wohl nicht besonders beeindrucken. In späteren Kapiteln enstehen dann aber statt der Texte E-Mails, HTML-Seiten oder Word-Dokumente.
Für den Anfang haben Sie zwei Dateien vorgegeben. In der Datei serienbrief_schablone.txt> ist das Layout eines Briefs enthalten.
ABSENDER
BETREFF
Lieber LESER,
hoffentlich gefaellt dir dieser Kurs.
GRUSS
In einer zweiten Datei stehen die Werte, die für ABSENDER , BETREFF und so weiter eingesetzt werden sollen. Damit wir den BETREFF nicht immer wiederholen müssen, führen wir ein weiteres, besonderes Wort ein. Steht in der Datei ERZEUGE, gefolgt von einem Namen, so soll eine Datei erzeugt werden, und zwar mit dem angegebenen Namen als Dateinamen.
ABSENDER Absender bin ich
BETREFF Das ist wichtig!
LESER Beate
GRUSS Viel Spass wuensche ich
ERZEUGE serienbrief_beate.txt
LESER Hans
ERZEUGE serienbrief_hans.txt
Übung 3: Zerlegen
Vielleicht hatten Sie schon mal das Problem, eine sehr lange Textdatei in kleine Teildateien zerlegen zu müssen. Zwar ist das mit einem Editor kein Problem, aber doch ein wenig umständlich. Ein kleines Werkzeug wäre nicht schlecht.
Schreiben Sie ein Programm, das aus einer Textdatei viele, kleine Dateien erzeugt. Dazu fügen Sie Anfangsmarken in die Textdatei ein, die so aufgebaut sind:
=FILE dateiname.txt
Ab hier wird in die Datei dateiname.txt geschrieben, bis entweder die Marke
=ENDFILE
folgt oder aber eine neue, weitere FILE -Angabe.
Die Marken fangen mit einem Gleichheitszeichen an, das am Anfang der Zeile stehen soll. Das ist eine alte Perl-Tradition. Sie können nämlich die Dokumentation eines Perl-Programms in das Programm selbst schreiben. Diese Art der Dokumentation heißt pod, was die Abkürzung von plain old documentation ist, und hat Steuerkommandos, die durch ein Gleichheitszeichen am Zeilenanfang markiert sind.
Übung 4: Eine Benutzerdatenbank
Wenn Sie sich bei einem EDV-System anmelden wollen, brauchen Sie eine Benutzer-Kennung; wir sagen lieber User-ID, weil das weniger förmlich klingt. Das ist ein kurzer, zusammenhängender Name. Zu diesen User-IDs legen wir ergänzende Informationen in einer Datenbank ab, nämlich:
Eine laufende Nummer des Benutzers, die numerische User-ID
Den wirklichen Namen des Benutzers
Die Benutzergruppe
Wir benutzen in diesem Kapitel die DBM-Datenbank, die wie ein Hash arbeitet. Als Schlüssel verwenden wir die User-ID; alle anderen Angaben veketten wir zu einem String, mit einer doppelten Tilde ~ als Trennzeichen. Der Nachteil eines solchen Trennzeichens ist natürlich, dass das Zeichen selbst im Text nicht
Weitere Kostenlose Bücher